MP新版代码生成器
- 引入依赖
<!-- mybatis-plus 3.5.7 ==> 3.5.7新版生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.7</version>
</dependency>
<!--mp生成器需要的 模板引擎依赖-->
<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.28</version>
<scope>compile</scope>
</dependency>
依赖版本不对会出现某些类找不到的情况
- 创建代码生成器类
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.sql.Types;
/**
* @ClassDescription:
* @Author: muyuzong
* @Created: 2024/7/24 10:12
*/
public class CodeGeneration {
private static final String url = "jdbc:mysql://localhost:3306/jh_v1?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC";
private static final String username = "root";
private static final String password = "root";
private static final String parentPath = "com.muyz.javaheirloom";
public static void main(String[] args) {
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author("muyz") // 设置作者
.enableSwagger() // 开启 swagger 模式
.outputDir("src\\main\\java"); // 指定输出目录
})
.dataSourceConfig(builder ->
builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
})
)
.packageConfig(builder ->
builder.parent("") // 设置父包名
.entity(parentPath+".entity.v1")// 设置实体类包名
.mapper(parentPath+".mapper.v1") // 设置 Mapper 接口包名
// .service("service") // 设置 Service 接口包名
// .serviceImpl("service.impl") // 设置 Service 实现类包名
.xml("resources.mapper.v1") // 设置 Mapper XML 文件包名
)
.strategyConfig(builder ->
builder.addInclude("employees") // 设置需要生成的表名
// .addTablePrefix("t_", "c_") // 设置过滤表前缀
.entityBuilder()
.enableLombok() // 启用 Lombok
.enableTableFieldAnnotation() // 启用字段注解
.controllerBuilder()
.enableRestStyle() // 启用 REST 风格
)
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
主要关注packageConfig
- 父包名就是在输出目录src\main\java的下级目录,可设置空字符串,不设置默认baomidou
- 剩下的mapper service等都在父包下