title: MyBatis-Plus 使用配置及代码生成
date: 2022-05-03 12:47:04
tags:
- Java
categories: - Java
cover: https://cover.png
feature: false
1. POM 依赖
2. YML 配置com.baomidou mybatis-plus-boot-starter 3.5.1 com.baomidou mybatis-plus-generator 3.5.2 org.springframework.boot spring-boot-starter-freemarker 2.6.7
mybatis-plus:
mapper-locations: classpath*:/mapper/**Mapper.xml
configuration:
local-cache-scope: statement
3. MybatisPlusConfig 配置类
@Configuration
@MapperScan("fan.**.dao")
public class MybatisPlusConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 添加全表更新删除插件
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor;
}
}
4. CodeGenerator 代码生成
-
获取项目数据库所对应表和字段的信息(information_schema 数据库的 TABLES 和 COLUMNS)
# 获取表 SELECt * FROM information_schema. TABLES WHERe TABLE_SCHEMA = (SELECt DATABASE()); # 获取字段 SELECT * FROM information_schema. COLUMNS WHERe TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = "sys_user";
-
使用生成器的模板新建一个 freemarker(模板引擎)的页面模板 - SysUser.java.ftl - ${baseEntity}
-
提供相关需要进行渲染的动态数据 - BaseEntity、表字段、注释、baseEntity=SuperEntity
-
使用 freemarker 模板引擎进行渲染 - SysUser.java
public class CodeGenerator {
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://127.0.0.1:3306/enterprise_hrms?connectTimeout=5000&socketTimeout=10000&autoReconnect=true&failOverReadOnly=false&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8", "root", "fan223");
public static void main(String[] args) {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
// 全局配置
.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称")).enableSwagger())
// 包配置
.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名")))
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(scanner.apply("请输入表名,多个表名用,隔开")))
// 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
详细配置信息:https://baomidou.com/pages/981406/
生成如下:
Service 继承了 IService 接口,同时 Mapper 继承了 BaseMapper,可以直接使用 Mybatis-Plus 封装的方法
@RestController
public class SysMenuController {
@Resource
private SysMenuService sysMenuService;
@GetMapping("/test")
public List test() {
return sysMenuService.list();
}
}



