1 项目准备
官网地址:baomidou.com/
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码。
MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖: 在 pom.xml 文件中添加 AutoGenerator 的依赖。
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
添加模板引擎依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,这里使用Freemarker引擎。
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
2 创建用户分类 表
CREATE TABLE `user-category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(255) DEFAULT NULL,
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户分类表';
然后定义代码生成器 CodeGenerator
- com.biglead.demo.code 为项目包名
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
* 代码生成器
*
* @author: 早起的年轻人
* @since: 2023/3/6 15:28
*/
public class CodeGenerator {
public static void main(String[] args) {
// 数据源配置
FastAutoGenerator.create("jdbc:mysql://mysql:3306/spring_boot?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&useSSL=false",
"testadmin", "qwert.12345")
.globalConfig(builder -> {
builder.author("早起的年轻人") // 设置作者
.enableSwagger() // 开启 swagger 模式 默认值:false
.disableOpenDir() // 禁止打开输出目录 默认值:true
.commentDate("yyyy-MM-dd") // 注释日期
.dateType(DateType.ONLY_DATE) //定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
.outputDir(System.getProperty("user.dir") + "/src/main/java")// 指定输出目录
;
})
.packageConfig(builder -> {
builder.parent("com.biglead.demo.code")
.moduleName("auto")
.entity("po")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller");
}).strategyConfig(builder -> {
builder.addInclude("user_category") // 设置需要生成的表名
.addTablePrefix("t_", "c_") // 设置过滤表前缀
.mapperBuilder()
.superClass(BaseMapper.class)
.enableBaseResultMap()
.enableBaseColumnList()
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sXml")
.enableFileOverride();//删除已存在的
}).templateConfig(builder -> {
builder.disable(TemplateType.ENTITY)
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.controller("/templates/controller.java")
.xml("/templates/mapper.xml")
;
})
.injectionConfig(builder -> {
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
然后把这些类移动到你需要的目录下即可
项目源码在这里 :gitee.com/android.lon… 有兴趣可以关注一下公众号:biglead
本文正在参加「金石计划」