MybatisPlus代码生成器的使用
一、引入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
二、配置数据库连接
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/student_manager?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root123
三、创建实体类父类(非必要步骤)
@Data
public class BaseEntity {
protected Date createTime;
protected Date modifiedTime;
protected Integer deleted;
}
四、测试生成代码
package com.example.mybatisgenerator;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.example.mybatisgenerator.commons.BaseEntity;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Collections;
@SpringBootTest
class MybatisGeneratorApplicationTests {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Test
void testGenerator() {
String projectPath = System.getProperty("user.dir");
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author("刘路生")
.outputDir(projectPath + "/src/main/java")
.commentDate("yyyy/MM/dd")
.dateType(DateType.ONLY_DATE);
})
.packageConfig(builder -> {
builder.parent("com.example.mybatisgenerator")
.entity("entity")
.mapper("mapper")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mapper"));
})
.strategyConfig(builder -> {
builder.addInclude("teacher")
.entityBuilder()
.superClass(BaseEntity.class)
.addSuperEntityColumns("create_time", "modified_time", "deleted")
.idType(IdType.ASSIGN_ID)
.enableLombok()
.mapperBuilder()
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper")
.enableMapperAnnotation()
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle();
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
@Test
void testGeneratorPlus() {
String projectPath = System.getProperty("user.dir");
FastAutoGenerator.create(url, username, password)
.globalConfig((scanner, builder) -> {
builder.author(scanner.apply("请设置作者名?"))
.outputDir(projectPath + "/src/main/java")
.commentDate("yyyy/MM/dd")
.dateType(DateType.ONLY_DATE);
})
.packageConfig((scanner, builder) -> {
builder.parent(scanner.apply("请输入父包名?"))
.entity("entity")
.mapper("mapper")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mapper"));
})
.strategyConfig((scanner, builder) -> {
builder.addInclude(scanner.apply("请输入需要生成的表名?"))
.entityBuilder()
.superClass(BaseEntity.class)
.addSuperEntityColumns("create_time", "modified_time", "deleted")
.idType(IdType.ASSIGN_ID)
.enableLombok()
.mapperBuilder()
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper")
.enableMapperAnnotation()
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle();
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}