代码生成器

9/7/2021

# 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/javaCodeGeneratorServiceTest类,进行修改

/**
 * !!! 所有查询条件均包含了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

# 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

# 4、原理

读取数据库中表结构和注释,然后使用velocity按照 前后端代码模板生成

  • 源码: net.lab1024.smartadmin.module.support.codegenerator
  • velocity文件: src\main\resources\templates

作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。

加“卓大”微信,入群 关注 1024创新实验室! 我要请 1024创新实验室 喝胡辣汤~
告白气球 (钢琴版)
JESSE T