CodeGenerator 是一个基于Spring Boot & MyBatis的种子项目,用于快速构建中小型API、RESTful API项目,该种子项目已经有过多个真实项目的实践,稳定、简单、快速,使我们摆脱那些重复劳动,专注于业务代码的编写,减少加班。操作演示请看博客:Mybatis代码生成器(纯Java)
- 最佳实践的项目结构、配置文件、精简的POM
- 统一响应结果封装及生成工具
- SwaggerUI框架嵌入便于接口调试查看数据
- 统一异常处理
- 简单的接口签名认证
- 常用基础方法抽象封装
- 使用Druid Spring Boot Starter 集成Druid数据库连接池与监控
- 使用FastJsonHttpMessageConverter,提高JSON序列化速度
- 集成MyBatis、通用Mapper插件、PageHelper分页插件,实现单表业务零SQL
- 提供代码生成器根据表名生成对应的Model、Mapper、MapperXML、Service、ServiceImpl、Controller等基础代码,其中Controller模板默认提供POST和RESTful两套,根据需求在
CodeGenerator.genController(tableName)方法中自己选择,默认使用POST模板。代码模板可根据实际项目的需求来扩展,由于每个公司业务都不太一样,所以只提供了一些比较基础、通用的模板,主要是提供一个思路来减少重复代码的编写,我在实际项目的使用中,其实根据公司业务的抽象编写了大量的模板。另外,使用模板也有助于保持团队代码风格的统一 - 有更复杂的,例如多表操作等,自行在相应的XML中写SQL
- 克隆项目
- 在任何一个有
main方法的Java类中,输入CodeGenerator.genCode() - 有多个参数,依次是二维数组,关于SQL表的数据(详情看CodeGenerator类中的main方法);作者名;数据库地址;数据库帐号;数据库密码
- 如需多表只需要修改二维数组,然后启动main方法,目录就会有自动生成的类(如果没有手动刷新)
- 对开发环境配置文件
application-dev.properties进行配置,启动项目,Have Fun!
- 表名,建议使用小写,多个单词使用下划线拼接
- Model内成员变量建议与表字段数量对应,如需扩展成员变量(比如连表查询)建议创建DTO,否则需在扩展的成员变量上加
@Transient注解,详情见通用Mapper插件文档说明 - 建议业务失败直接使用
ServiceException("message")抛出,由统一异常处理器来封装业务失败的响应结果,比如throw new ServiceException("该手机号已被注册"),会直接被封装为{"code":400,"message":"该手机号已被注册"}返回,无需自己处理,尽情抛出 - 需要工具类的话建议先从
apache-commons-*和guava中找,实在没有再造轮子或引入类库,尽量精简项目 - 开发规范建议遵循阿里巴巴Java开发手册(最新版下载)
- 建议在公司内部使用ShowDoc、SpringFox-Swagger2 、RAP等开源项目来编写、管理API文档