目录
1.前置条件
2.导坐标
3.配置数据源
4.配置mapper扫描路径
5.MyBatis Plus代码生成器整合
1.导坐标
2.编写代码生成逻辑
1.前置条件
已经初始化好一个spring boot项目且版本为3X,项目可正常启动
2.导坐标
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</version>
</dependency>
为何要排除掉mybatis plus整合好的mybatis依赖单独引入一个?
Spring Boot 3.2.2整合MyBatis-Plus 3.5.5依赖不兼容问题-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135723627?spm=1001.2014.3001.5501
3.配置数据源
application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
4.配置mapper扫描路径
在启动类添加@MapperScan("com.mijiu.mapper")注解指定mapper文件夹
如果不加该注解则要在每个mapper接口添加@Mapper注解
此时可以成功启动项目
看到MyBatis Plus的banner说明到这里整合好了。
5.MyBatis Plus代码生成器整合
官方文档:
代码生成器(新) | MyBatis-Plus (baomidou.com)https://baomidou.com/pages/779a6e/#%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8
1.导坐标
第一个依赖是代码生成器
第二个是代码生成器所依赖代码生成模板velocity,当然不止这一个模板具体参阅官网
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
2.编写代码生成逻辑
这里我写好demo了,需要修改的地方已经标记//TODO注释了
如果你的目录结构同作者类似,cv下面的demo修改一下//TODO标注的配置运行即可
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import java.util.*;
/**
* @author mijiupro
*/
public class CodeGenerator {
public static void main(String[] args) {
getCode();
}
public static void getCode() {
//TODO 修改为自己的数据库信息
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";
String username = "root";
String password = "123456";
//TODO 修改为自己的表名
List<String> tables = List.of("user");//需要生成对应代码的表名的集合
FastAutoGenerator.create(url, username, password)
//全局配置----------------------------------------------------------------------------------------
.globalConfig(builder -> {
builder
.author("蒾酒")//TODO 修改为自己名称
.outputDir(System.getProperty("user.dir") + "\\src\\main\\java")// 输出路径(写到java目录)
// .enableSwagger() //开启swagger,会自动添加swagger相关注解
.commentDate("yyyy-MM-dd");//日期格式
})
//包名配置--------------------------------------------------------------------------------------------
.packageConfig(builder ->
builder.parent("com.mijiu")//TODO 修改为自己项目的路径
// .moduleName("practice")//模块名,设置该项会在输出路径上增加一层模块名目录
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.mapper("mapper")
.xml("mapper/xml")
)
//策略配置-----------------------------------------------------------------------------------------
.strategyConfig(builder -> {
builder
.addInclude(tables)// 需要生成代码对应的表,若需要生成全部表则注释该行解放下一行
// .addInclude("all")//生成全部表
// .addTablePrefix("p_")//表前缀过滤,例如“p_”开头的表不会生成对应代码
//实体策略配置
.entityBuilder()
.enableFileOverride()// TODO 开启覆盖已生成的entity文件,关闭则注释本行
.enableLombok()// 自动添加lombok注解@Getter @Setter
.logicDeleteColumnName("deleted")// 指定逻辑删除字段名自动为其添加逻辑删除字段注解
.enableTableFieldAnnotation()//启用表字段注解@TableField
//Mapper策略配置
.mapperBuilder()
.enableBaseResultMap() // 生成通用的resultMap
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")//mapper文件后缀,如UserMapper
// .enableFileOverride()// TODO 开启覆盖已生成的mapper文件,关闭则注释本行
.formatXmlFileName("%sMapper")//xml文件后缀,如UserMapper.xml
//Service策略配置
.serviceBuilder()
// .enableFileOverride()//TODO 开启覆盖已生成的service文件,关闭则注释本行
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
//Controller策略配置
.controllerBuilder()
.enableHyphenStyle() // 映射路径使用连字符格式
.formatFileName("%sController")
// .enableFileOverride()// TODO 开启覆盖已生成的controller文件,关闭则注释本行
.enableRestStyle();//启用rest风格自动添加@RestController
}).execute();
}
}
运行即可。