通过mybatis-plus生成代码,写了一个示例,方便以后使用:
需要的依赖文件:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
<version>3.5.15</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.15</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.34</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.9.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jdbc</artifactId>
</dependency>
package com.example.demo;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.query.SQLQuery;
import com.example.demo.system.base.BaseDao;
import com.example.demo.system.base.IBaseDao;
import org.apache.ibatis.type.JdbcType;
import java.util.Collections;
public class GeneratorMysqlTest {
public static void main(String[] args) {
String basePath = "D:/develop/source/java/demo1/src/main/java";
String basePath2 = "D:/develop/source/java/demo1/src/main/resources/mapper";
String baskPackage = "com.example.demo.repository";
// 使用 FastAutoGenerator 快速配置代码生成器
FastAutoGenerator.create("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai", "root", "root")
.globalConfig(builder -> {
builder.author("Alan") // 设置作者
.commentDate("yyyy-MM-dd")
.outputDir(basePath); // 输出目录
})
.dataSourceConfig(builder ->
builder.databaseQueryClass(SQLQuery.class) //DefaultQuery (元数据查询)、SQLQuery (SQL查询)
.typeConvert(new MySqlTypeConvert())
.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
if (JdbcType.TINYINT == metaInfo.getJdbcType()) {
if (metaInfo.getLength() == 1) {
return DbColumnType.BOOLEAN;
}
return DbColumnType.INTEGER;
}
if (JdbcType.SMALLINT == metaInfo.getJdbcType()) {
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
})
.dbQuery(new MySqlQuery())
)
.packageConfig(builder -> {
builder.parent(baskPackage) // 设置父包名
.entity("model") // 设置实体类包名
.mapper("mapper") // 设置 Mapper 接口包名
.service("dao") // 设置 Service 接口包名
.serviceImpl("dao.impl") // 设置 Service 实现类包名
.xml("mappers") // 设置 Mapper XML 文件包名
.pathInfo(Collections.singletonMap(OutputFile.xml, basePath2)); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder
// .addInclude("lx_user")
.controllerBuilder()
.disable(); // 设置需要生成的表名
builder
.serviceBuilder()
.enableFileOverride()
.superServiceClass(IBaseDao.class)
.superServiceImplClass(BaseDao.class)
.formatServiceFileName("I%sDao")
.formatServiceImplFileName("%sDaoImpl")
.build();
builder.mapperBuilder()
.enableBaseResultMap()
.enableBaseColumnList()
.enableFileOverride()
.enableMapperAnnotation()
// .generateMapperMethodHandler(new DefaultGenerateMapperMethodHandler())
.build();
builder.entityBuilder()
.enableRemoveIsPrefix()
.enableTableFieldAnnotation()
.enableFileOverride()
// .enableColumnConstant()
.enableSerialAnnotation()
// .fieldUseJavaDoc(true)
.toString(true)
.build();
})
/**
* VelocityTemplateEngine(Default)
* FreemarkerTemplateEngine
* BeetlTemplateEngine
* EnjoyTemplateEngine
*/
.templateEngine(new VelocityTemplateEngine()) // 使用 Freemarker 模板引擎
.execute(); // 执行生成
}
}


近期评论