基于springboot的增删改查代码生成工具
还在吐槽工作中简单无趣的的单表增删改查复制粘贴的都要要睡觉?
像找一款工具能自动完成这些低级无趣的劳动却没有一个适合自己的项目。
网上一搜一大把xxx代码生成工具,
有的功能很强大,但是代码太耦合,无法自定义生成规则和页面样式,想要实现自己的逻辑只能改代码,违背了对扩展开发对修改关闭的设计原则。
有的功能很强大,也不耦合,但是配置过于复杂,自己定义一个模板的时间,增删改查页面都写好几个了,得不偿失。
作者基于javaEE 时下最流行的微框架springboot基础上,通过自动配置一套默认生成规则(后端 springmvc+mybatis+mapper,前端jquery+jsp),加上简单明了的application.yml申明配置,使用freemarker作为视图生成工具,简单的配置即可生成一套增删改查代码。
码云地址:https://gitee.com/luanhaoyu/crud-generator
可生成的代码包含:
该工具不涉及dao层代码,默认使用的mybatis-generator和TKmybatis生成mapper和模型文件。
如有兴趣可以参考:http://blog.csdn.net/isea533/article/details/41457529
### 使用步骤
### 1.确保已经包含数据库表对应的实体对象模型
例如模型类:
@Table(name = "T_ZZFW_XQ")
@ApiModel("ZzfwXq(校区对象)")
public class ZzfwXq implements Serializable {
/**
* 校区代码
*/
@Id
@Column(name = "XQDM")
@ApiModelProperty(value ="校区代码",required = false)
@ColumnType(jdbcType=JdbcType.VARCHAR)
private String xqdm;
/**
* 备注
*/
@Column(name = "BZ")
@ApiModelProperty(value ="备注",required = false)
@ColumnType(jdbcType=JdbcType.VARCHAR)
private String bz;
//省略其他字段和Getter Setter方法
private static final long serialVersionUID = 1L;
public enum FieldEnum {
XQDM("xqdm","XQDM"),
BZ("bz","BZ"),
//省略其他字段
;
private String javaFieldName;
private String dbFieldName;
FieldEnum(String javaFieldName, String dbFieldName) {
this.javaFieldName = javaFieldName;
this.dbFieldName = dbFieldName;
}
public String javaFieldName() {
return javaFieldName;
}
public String dbFieldName() {
return dbFieldName;
}
}
}
楼主这里使用扩展的tkmapper-generator插件,模型字段上包含 jpa注解和swagger注解,主要获取表注释和字段注释作为默认的页面标题和字段名称,不是必须,
如果不想使用jpa注解和swagger注解,可以集成抽象类 _AbstractCrudColumnFactory_ 和 _AbstractCrudBeanFactory_ 并注册为springbean来自定义模型和列的内容
默认实现: _DefaultCrudColumnFactory_ 和 _DefaultCrudBeanFactory_
### 2. 加入模型所在项目的依赖
例如:
com.wisedu
zzfw-template
3.0.1
*
*
crudgen:
project:
java-project-path: E://workspace//zzfw-pack//zzfw-interface//zzfw-template #生成的工程路径
view-project-path: E://workspace//zzfw-pack//zzfw-base//zzfw-admin #视图生成的工程路径
template-path: /templates/default #模板文件路径 默认为当前项目 resources/templates/default下
controller-enabled: true #是否生成controller
service-enabled: true #是否生成service服务
page-model-param-enabled: true #是否生成分页模型参数
view-enabled: true #是否生成视图 默认jsp
js-enabled: true #是否生成js
sql-enabled: true #是否生成sql
model-attributes:
- model-name: ZzfwXq #model名称
extend-attr-map: #自定义扩展属性
author: administrator
java-attributes:
model-package: com.wisedu.zzfw.template.campus.model #model包路径
service-package: com.wisedu.zzfw.template.campus.service #service包路径
controller-package: com.wisedu.zzfw.campus.web #controller包路径
controller-request-mapping: manage/campus #controller requestMapping路径
query-order-sql: px asc,csmc desc,xqmc desc #排序字段,格式为sql中order by 后的内容
view-attributes:
view-path: manage/campus #jsp等视图文件相对路径
column-attr-map: #列属性
xqdm:
index: 1 #顺序号
nullable: false #是否可空 默认可空
queryable: true #是否作为查询条件 默认否
uniqueable: true #是否唯一性校验
alias: 校区代码 #列别名 页面显示字段名称 为空默认为数据库字段注释
grid-showable: true #表格是否显示 默认显示
type: #数据展示类型 text combobox datebox等 暂未实现
extend-attr-map: #列扩展属性
custom-attr: 2018
xqmc:
index: 2
nullable: false
queryable: true
csmc:
index: 0
nullable: false
queryable: true
alias: 城市名称
menu-attributes:
module-name: 校区管理 #模块名称
parent-module-name: 字典表维护 #父模块名称
role-name: 实施管理员 #角色名称
### 4. 运行Application.java 或者mvn spring-boot:run
即可生成 controller service pageModelParam等代码### 5. 如果默认的配置不满足要求的,可以自定义配置
参考custom目录, 注册相关配置类以取代默认配置6 题外话
这个工具功能不是最强大的最完善的,主要是展示下鄙人设计过程中使用到的一些较为适用的设计思想和模式
例如:封装变化,单一职责,多组合少继承,对修改关闭对扩展开放等等。。。如有不足欢迎指正。