携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情
前言:
在使用Mybatisplus之前一直使用的是通用mapper,其中代码生成使用的是mybatis自己的工具类Mybatis Generator,这个生成工具有比较大的局限性,只能生成实体类和mapper文件,像是controller和service这种代码的就无法生成。
而mybatisplus可以针对性的进行生成代码文件,通过配置可以将controller、service、mysql、entity等代码都可以生成,而且可以配置生成路径和文件名,这样一来开发效率就大大提高,尤其是开发一些管理系统的时候。
实现:
一、引入maven坐标
<!-- 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</artifactId>
<version>1.7</version>
</dependency>
二、创建mybatisplus的配置类
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatisplus的配置类
*
*/
@Configuration
@MapperScan("com.code.sys.mapper")
public class MybatisPlusConfig {
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
三、创建代码生成器Test测试类
在配置类中可以指定输出目录,生成代码的包名,还可以使用生成代码的模板,如果有特殊需要可以直接自定义代码生成模板,放在resources目录下,在配置类中指定模板位置,这样在生成代码时就会按照自定义模板的代码内容来生成了。
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Collections;
@SpringBootTest
class ErpApplicationTests {
@Test
void codeGenerator() {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/springboot_db?serverTimezone=GMT%2b8", "root", "root")
// 全局配置
.globalConfig(builder -> {
builder.fileOverride() // 覆盖已生成文件
.disableOpenDir()// 禁止打开输出目录
.outputDir("E:\\BS_OT\\bookSystem\\src\\main\\java\\"); // 指定输出目录
})
// 包配置
.packageConfig(builder -> {
builder.parent("com.code.bus") // 设置父包名
.moduleName(null) // 设置父包模块名
.entity("domain")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "E:\\BS_OT\\bookSystem\\src\\main\\resources\\mapper\\")); // 设置mapperXml生成路径
})
// 策略配置
.strategyConfig(builder -> {
// builder.entityBuilder()
// builder.mapperBuilder().enableMapperAnnotation().build();
builder.controllerBuilder().enableHyphenStyle() // 开启驼峰转连字符
.enableRestStyle(); // 开启生成@RestController 控制器
builder.addInclude("sys_activity") // 设置需要生成的表名
.addTablePrefix("t_", "sys_"); // 设置过滤表前缀
builder.serviceBuilder().formatServiceFileName("%sService"); //去掉Service接口的首字母I
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}