为了避免手动创建entity以及相应mapper,service等文件,使用mybatis-plus-generator代码自动生成功能,根据数据库表自动生成所需文件,本次记录一下使用过程,方便回顾
1、创建工程
创建了一个maven工程(我是在一个父项目下创建的一个字项目,后续准备在拓展其他工程,没有直接创建springboot工程,想慢慢自己手动创建,熟悉过程,后续可以直接通过idea 的springboot创建实现工程创建),端口在application.yml先配置为7022(自己随意设置,就是个空闲端口);
2. maven依赖
这些都是自己先是参考网上使用mybatis-plus-generator时引入了哪些包,然后加上自己的个性化所需的jar包依赖
<dependencies>
<!--自己创建的一个公共返回类,用户返回http请求信息-->
<dependency>
<groupId>com.cdc</groupId>
<artifactId>oa-common-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--spring boot核心启动类,用于将代码生成服务启动 没他用不了SpringbootApplication注解-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--spring boot web核心启动类,用于http请求访问 没他用不了RestMapping 等-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--代码生成依赖包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<!--代码生成器模板引擎 这个是mybatis代码生成的依赖包-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<!--数据库连接包,我用的是mysql8以上版本-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis核心包 没他用不了BaseMapper-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
</dependency>
</dependencies>
3、代码编写
初版尝试先使用简单的方法,通过一个Springboot的Controller类,通过http的url访问(也可以直接用一个单元测试来实现,我这么整主要后面想优化拓展,比如用前端页面图形化访问实现),来创建对应表文件;核心部分的代码先参考网上的写法,根据自己的包名,先生成看看效果
这个是对应Controller的生成方法,这里先写死了,后面再慢慢改吧
@RequestMapping("/generatorCode")
public CommonResult getGeneratorResult() {
//数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/housebooking?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false";//数据库url
String username = "root";//账号
String password = "123456";//密码
//全局配置参数
String author = "cdc";//作者
String outputDir = System.getProperty("user.dir") + "\\src\\main\\java";//指定输出目录
//包配置参数
String parent = "com.cdc.oa";//父包名
String moduleName = "auth";//父包模块名
String entity = "entity";//Entity 实体类包名
String mapper = "mapper";//Mapper 包名
String mapperXml = "mapper.xml";//Mapper XML 包名
String service = "service";//Service 包名
String serviceImpl = "service.impl";//Service Impl 包名
String controller = "controller";//Controller 包名
//要生成的数据库表
List<String> tables = new ArrayList<>();
tables.add("sys_user");
//开始生成
FastAutoGenerator.create(url, username, password)
//全局配置
.globalConfig(builder -> {
builder.author(author)
.outputDir(outputDir)
.enableSwagger()//开启swagger
.commentDate("yyyy-MM-dd");//注释日期
})
//包配置
.packageConfig(builder -> {
builder.parent(parent)
.moduleName(moduleName)
.entity(entity)
.mapper(mapper)
.xml(mapperXml)
.service(service)
.serviceImpl(serviceImpl)
.controller(controller);
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude(tables)
//开启生成实体类
.entityBuilder()
.enableLombok()//开启 lombok 模型
.enableTableFieldAnnotation()//开启生成实体时生成字段注解
//开启生成mapper
.mapperBuilder()
.enableBaseResultMap()//启用 BaseResultMap 生成
.superClass(BaseMapper.class)//设置父类
.enableMapperAnnotation()//开启 @Mapper 注解
.formatMapperFileName("%sMapper")//格式化 mapper 文件名称
.formatXmlFileName("%sMapper")//格式化 xml 实现类文件名称
//开启生成service及impl
.serviceBuilder()
.formatServiceFileName("%sService")//格式化 service 接口文件名称
.formatServiceImplFileName("%sServiceImpl")//格式化 service 实现类文件名称
//开启生成controller
.controllerBuilder()
// 映射路径使用连字符格式,而不是驼峰
.enableHyphenStyle()
.formatFileName("%sController")//格式化文件名称
.enableRestStyle();
})
.templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
//先随便整一个公共的返回数据
CommonResult commonResult = new CommonResult();
commonResult.setCode(200);
commonResult.setMessage("创建成功");
commonResult.setData(null);
return commonResult;
}
4、启动项目尝试访问
访问http://127.0.0.1:7022/generatorCode 然后返回创建成功;
{"code":200,"message":"创建成功","data":null}
查看项目相应路径,就会生成对应的文件了