代码生成器

快速生成前后端代码

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);

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

4、原理

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

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

作者简介:
卓大, 1024创新实验室主任,混迹于各个技术圈,研究过计算机,熟悉点java,略懂点前端。