自动生成代码工具类
自动生成代码工具自动生成代码的思路代码结构生成代码主要步骤生成实体模板开始生成代码最终生成的实体service层接口这是我在工作之余自己写的一个Java代码生成工具,虽然网上有不少代码自动生成的工具,但是原理都差不多,自己用空闲时间写一个也能学到一些东西,虽然不推荐重复造轮子,但是自己动手写一个自动生成代码的工具类是花不了多少时间的,只要把思路弄清楚,半天就能撸一个出来,现在我在工作中一般都是用.
·
这是我在工作之余自己写的一个Java代码生成工具,虽然网上有不少代码自动生成的工具,但是原理都差不多,自己用空闲时间写一个也能学到一些东西,虽然不推荐重复造轮子,但是自己动手写一个自动生成代码的工具类是花不了多少时间的,只要把思路弄清楚,半天就能撸一个出来,现在我在工作中一般都是用自己写的这个工具类来完成一部分和具体业务关联不大却又必须要写的代码,比如数据库表对应的实体、controller、service、mapper等,一般新功能的开发都少不了增删改查这几个接口,这些接口和代码不应该每次开发新功能都去自己动手写或者复制粘贴,这样容易出错,利用工具一键生成可以节约很多不必要的时间。我平时基本上都是一键生成代码后就可以用Postman工具来测试接口了。
自动生成代码的思路
- 数据库建好表之后,根据jdbc连接数据库,获取表结构信息(字段名称、字段类型、字段备注等信息);
- 根据jdbc查询到的表结构信息配合freemarker模板语言构建实体bean;
- 根据生成的实体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
如果觉得有用,请给个赞吧^^!
更多推荐
所有评论(0)