自动生成代码工具类

这是我在工作之余自己写的一个Java代码生成工具,虽然网上有不少代码自动生成的工具,但是原理都差不多,自己用空闲时间写一个也能学到一些东西,虽然不推荐重复造轮子,但是自己动手写一个自动生成代码的工具类是花不了多少时间的,只要把思路弄清楚,半天就能撸一个出来,现在我在工作中一般都是用自己写的这个工具类来完成一部分和具体业务关联不大却又必须要写的代码,比如数据库表对应的实体、controller、service、mapper等,一般新功能的开发都少不了增删改查这几个接口,这些接口和代码不应该每次开发新功能都去自己动手写或者复制粘贴,这样容易出错,利用工具一键生成可以节约很多不必要的时间。我平时基本上都是一键生成代码后就可以用Postman工具来测试接口了。

自动生成代码的思路

  1. 数据库建好表之后,根据jdbc连接数据库,获取表结构信息(字段名称、字段类型、字段备注等信息);
  2. 根据jdbc查询到的表结构信息配合freemarker模板语言构建实体bean;
  3. 根据生成的实体bean配合freemarker模板语言生成controller、service、mapper层的代码;

代码结构

在这里插入图片描述

生成代码主要步骤

在这里插入图片描述

生成实体模板

在这里插入图片描述

package ${package}.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;

/**
 * @author ${author}
 * @className: ${entityName}.java
 * @time: ${now}
 * @tableName_comments ${tableNameComments}
 */
@Data
@Table(name = ${entityName}.tableName)
public class ${entityName} implements Serializable {

    private static final long serialVersionUID = 1L;
	private static final String tableName="${tableName}";

	${createPropStr}
	

}

开始生成代码

在这里插入图片描述

最终生成的实体

package com.ztesoft.bss.salesres.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;

/**
 * @author wuzhangwei
 * @className: SysUser.java
 * @time: 2019-06-10
 * @tableName_comments 用户ID
 */
@Data
@Table(name = SysUser.tableName)
public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;
	private static final String tableName="SYS_USER";

	//用户ID
	@Id
	private Long id;

	//用户名
	private String userName;

	//密码是
	private String password;

	//真实姓名
	private String trueName;

	//年龄
	private Long age;

	//性别
	private String sex;

	//联系电话
	private String tel;

	//微信
	private String wx;

	//最后登录时间
	private Date lastLoginTime;

	//状态0:正常;1:禁用
	private Long status;

	//加盐
	private String salt;	

}

service层接口

service层接口freemarker模板

package ${package}.service;

import com.github.pagehelper.PageInfo;
import java.util.List;
import java.util.Map;
import ${package}.entity.${entityName};

/**
* @ClassName: ${entityName}Service
* @Description:
* @author ${author}
* @date ${now}
*/
public interface ${entityName}Service {

	/**
	* @Description: 列表查询
	* @param Map<String,Object> params
	* @throws Exception
	* @return PageInfo<${entityName}>
    * @author Created by ${author} on ${now}
    */
    public PageInfo<${entityName}>  qry${entityName}List(Map<String,Object> params) throws Exception ;

    /**
    * @Description: 通过id查询
    * @param ${instanceName}
    * @return ${entityName}
    * @author Created by ${author} on ${now}
    */
    ${entityName} qry${entityName}ById(${entityName} ${instanceName}) throws Exception;

    /**
    * @Description: 修改
    * @param ${instanceName}
    * @return int
    * @author Created by ${author} on ${now}
    */
    int update${entityName}ById(${entityName} ${instanceName}) throws Exception;

    /**
    * @Description: 根据id删除
    * @param ${instanceName}
    * @return int
    * @author Created by ${author} on ${now}
    */
    int remove${entityName}ById(${entityName} ${instanceName}) throws Exception;

    /**
    * @Description: 新增
    * @param ${instanceName}
    * @return int
    * @author Created by ${author} on ${now}
    */
    int add${entityName}(${entityName} ${instanceName}) throws Exception;

}



service层接口代码

package com.ztesoft.bss.salesres.service;

import com.github.pagehelper.PageInfo;
import java.util.List;
import java.util.Map;
import com.ztesoft.bss.salesres.entity.SysUser;

/**
* @ClassName: SysUserService
* @Description:
* @author wuzhangwei
* @date 2019-06-10
*/
public interface SysUserService {

	/**
	* @Description: 列表查询
	* @param Map<String,Object> params
	* @throws Exception
	* @return PageInfo<SysUser>
    * @author Created by wuzhangwei on 2019-06-10
    */
    public PageInfo<SysUser>  qrySysUserList(Map<String,Object> params) throws Exception ;

    /**
    * @Description: 通过id查询
    * @param sysUser
    * @return SysUser
    * @author Created by wuzhangwei on 2019-06-10
    */
    SysUser qrySysUserById(SysUser sysUser) throws Exception;

    /**
    * @Description: 修改
    * @param sysUser
    * @return int
    * @author Created by wuzhangwei on 2019-06-10
    */
    int updateSysUserById(SysUser sysUser) throws Exception;

    /**
    * @Description: 根据id删除
    * @param sysUser
    * @return int
    * @author Created by wuzhangwei on 2019-06-10
    */
    int removeSysUserById(SysUser sysUser) throws Exception;

    /**
    * @Description: 新增
    * @param sysUser
    * @return int
    * @author Created by wuzhangwei on 2019-06-10
    */
    int addSysUser(SysUser sysUser) throws Exception;

}



其它代码省略…

完整代码路径:https://github.com/Garfield-Lucky/auto-create-code
如果觉得有用,请给个赞吧^^!

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值