用以记录
**
适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!
**
项目结构
添加依赖
<!-- mybatis-plus 代码生成依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- 下面两个都是模板,可以根据自己的情况选择 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.9</version>
</dependency>
<!-- mybatis-plus 代码生成依赖 -->
package com.example.codegenerator;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Collections;
@SpringBootTest
class CodeGeneratorApplicationTests {
@Test
void contextLoads() {
// 获取当前项目路径
String property = System.getProperty("user.dir");
// 文件生成地址
String fileGenerationAddress = "/src/main/java";
// xml存放的路径
String thePathWhereTheXmlIsStored = "/src/main/java/resources/mybatis/mapperxml";
// 网址:https://baomidou.com/pages/981406/
FastAutoGenerator.create("jdbc:mysql://localhost:3306/demo_login?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8",
"root", "root").globalConfig(builder -> {
builder.author("WangZhen")//作者
.fileOverride()//覆盖已经存在的文件
// .outputDir("D://baomidou")//文件生成地址
.outputDir(property + fileGenerationAddress)//文件生成地址
.commentDate("yyyy-MM-dd HH:mm:ss");//时间格式
}).packageConfig(builder -> {//包设置
// TODO 需要修改
builder.parent("com.example")//父类路径设置
// TODO 需要修改
.moduleName("codegenerator")//模块名称,指定生成在哪个模块
.entity("pojo")//实体类包名
.service("service")//服务类包名
.serviceImpl("service.impl")//服务类包名
.controller("controller")//controller层包名
.mapper("mapper")//dao层包名
.xml("mappers")//xml包名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, property + thePathWhereTheXmlIsStored));//xml存放的路径
}).strategyConfig(builder -> {//设置文件生成名字
// TODO 需要修改
builder.addInclude("user")//需要生成的表名,用逗号隔开,可以多个表生成
.addTablePrefix()//增加过滤表前缀
.addTableSuffix()//增加过滤表后缀
.addFieldPrefix("")//指定表的哪些字段去掉
.addFieldSuffix()//增加过滤字段后缀
.serviceBuilder()//开始设置服务层
.formatServiceFileName("%sService")//这里整体为 %s(代表表名)+ 后面的Service
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()//实体策略配置
.enableColumnConstant()//生成字段常量
.naming(NamingStrategy.underline_to_camel)//生成符合驼峰命名
.enableChainModel()//支持链式书写
.enableLombok()//支持lombok
// .versionColumnName("version")//指定乐观锁的字段名称
// .addTableFills(new Property("gmtCreate", FieldFill.INSERT))
// .addTableFills(new Property("gmtModified", FieldFill.INSERT_UPDATE))
.logicDeletePropertyName("deleted")//指出逻辑删除
.enableTableFieldAnnotation()//提供字段注解
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle()//生成@restcontroller 风格
.mapperBuilder()
.superClass(BaseMapper.class)//继承
.formatMapperFileName("%sDao")
.enableMapperAnnotation()//开启注解
.formatXmlFileName("%sMapper");
}).strategyConfig(builder -> {
builder.mapperBuilder()
.superClass(BaseMapper.class)
.enableBaseResultMap()
.enableBaseColumnList()
// .cache(MyMapperCache.class)
.formatMapperFileName("%sDao")
.formatXmlFileName("%sXml");
}).templateEngine(new VelocityTemplateEngine()).execute();//以模板的方式生成
}
}