# 1、浅谈代码生成
笔者认为代码生成在某些情景下非常有用,但是在某些情景下还是建议慎用,因为不是手敲出的代码毕竟缺少了一个思考的过程,会很容易产生bug,相比于速度和bug,我相信速度在bug面前不值一提。
那么为什么我们还是做了代码生成呢? 因为 “ 真香 ” 定律。
代码生成真的很香,但是我们依然建议在使用代码生成之前多去思考业务,三思之后再去使用它
# 2、代码生成简介
当前代码生成实现功能如下:
- 分页查询、添加、修改、批量删除、全部导出、批量导出
- 后端代码包含:controller,service,mapper, xml,各类javabean
- 前端代码包含:api, router, list.vue, form.vue
# 3、使用介绍
# 3.1 配置好开发环境
- 要配置好 java, maven, mysql登
- 配置好jdbc, redis等 application.properties 配置文件
# 3.2 新建一个数据库表
要求:必须有表注释和列注释!因为注释和前端代码需要用到
比如 smart-admin-dev
中的 t_peony
表
# 3.3 修改代码生成器
打开:src/test/java
的 CodeGeneratorServiceTest
类,进行修改
/**
* !!! 所有查询条件均包含了createTime和updateTime的 范围查询 !!!
*/
// t_peony 牡丹花表
//搜索字段 kind, 使用like搜索
CodeGeneratorQueryColumnDTO kind = CodeGeneratorQueryColumnDTO.builder()
.columnName("kind")
.sqlOperate(SqlOperateTypeEnum.LIKE).build();
//搜索字段 kind, 使用 == 搜索
CodeGeneratorQueryColumnDTO id = CodeGeneratorQueryColumnDTO.builder()
.columnName("id")
.sqlOperate(SqlOperateTypeEnum.EQUALS).build();
//搜索字段 name, 使用like搜索
CodeGeneratorQueryColumnDTO name = CodeGeneratorQueryColumnDTO.builder()
.columnName("name")
.sqlOperate(SqlOperateTypeEnum.LIKE).build();
//搜索字段 color, 使用like搜索
CodeGeneratorQueryColumnDTO color = CodeGeneratorQueryColumnDTO.builder()
.columnName("color")
.sqlOperate(SqlOperateTypeEnum.LIKE).build();
List<CodeGeneratorQueryColumnDTO> queryColumnList = Lists.newArrayList(id, kind, name, color);
CodeGeneratorDTO codeGenerator = CodeGeneratorDTO.builder()
.author("卓大")//class 注释作者
.company("1024创新实验室( www.1024lab.net )")//class注释公司名字
.tableName("t_peony")//表名
.tablePrefix("t_")//表名前缀
.basePackage("net.lab1024.smartadmin")//包名
.modulePackage("business.peony")//业务子包名
.queryColumnList(queryColumnList)//加入搜搜字段
.build();//构建
//当需要代码生成的时候,请将注释去掉
codeGeneratorService.codeGenerator(codeGenerator);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 3.4 执行test类
执行代码以后会在桌面生成一个 smart-admin
目录,里面存放即为生成的代码
目录结构如下:
后端相关文件
java/
---business/peony/
-------controller/PeonyController.java
-------service/PeonyService.java
-------domain/*.java
-------dao/PeonyDao.java
mapper/
---business/peony/
-------PeonyMapper.xml
前端相关文件
web/
---api/
---router/
---poney/
------peony-list.vue
------components/peony-list-form.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 4、原理
读取数据库中表结构和注释,然后使用velocity按照 前后端代码模板生成
- 源码:
net.lab1024.smartadmin.module.support.codegenerator
- velocity文件:
src\main\resources\templates
作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。
![]() | ![]() | ![]() |
加“卓大”微信,入群 | 关注 1024创新实验室! | 我要请 1024创新实验室 喝胡辣汤~ |