springboot+mybatis-plus集成
在ORM框架中,也经常使用mybatis-plus,下面记录下springboot+mybaits-plus集成:
官网: https://baomidou.com/
1. 创建工程并在pom中添加引用
<dependencies> <!--注入web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.3.5.RELEASE</version> </dependency> <!--注入lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.14</version> </dependency> <!--knife4j swagger--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> <exclusions> <exclusion> <artifactId>swagger-annotations</artifactId> <groupId>io.swagger</groupId> </exclusion> </exclusions> </dependency> <dependency> <artifactId>swagger-annotations</artifactId> <groupId>io.swagger</groupId> <version>1.5.22</version> </dependency> <!-- 加载mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <!-- 加载jdbc连接数据库 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>2.3.6.RELEASE</version> </dependency> <!-- 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.2</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> <!--测试包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter-test</artifactId> <version>3.5.1</version> </dependency> </dependencies>
2.yaml配置文件中添加数据库配置
server: port: 8080 servlet: path: / # DataSource config 数据库配置 spring: datasource: name: mysql url: jdbc:mysql://127.0.0.1:3306/devdatabase?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 username: devuser password: admin driver-class-name: com.mysql.cj.jdbc.Driver
3.在mysql数据库中创建数据库表
CREATE TABLE `buyr_user` ( `USER_ID` bigint(19) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', `USER_NAME` varchar(90) NOT NULL COMMENT '用户名称', `NICK_NAME` varchar(90) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '用户昵称', `USER_INTRO` varchar(300) DEFAULT NULL COMMENT '个性签名', `AVATAR` varchar(1000) DEFAULT NULL COMMENT '头像图片', `EMAIL` varchar(255) DEFAULT NULL COMMENT '邮件地址', `PHONE` varchar(255) DEFAULT NULL COMMENT '手机号', `USER_PASS` varchar(255) DEFAULT NULL COMMENT '密码', `PASS_SALT` varchar(255) DEFAULT NULL COMMENT '密码盐', `USER_STATUS` varchar(32) DEFAULT '1' COMMENT '用户状态', `USER_SCORE` int(11) DEFAULT NULL COMMENT '用户打分', `TOTAL_COST_AMT` decimal(24,6) DEFAULT NULL COMMENT '累计消费金额', `LAST_LOGIN_TIME` timestamp NULL DEFAULT NULL COMMENT '最后登录时间', `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁', `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', `CREATED_TIME` timestamp NULL DEFAULT NULL COMMENT '创建时间', `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', `UPDATED_TIME` timestamp NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='买家';
4.启动类上添加@MapperScan 注解
package com.mybatisplusdemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @MapperScan(value = "com.mybatisplusdemo.mapper") @SpringBootApplication public class MybatisPlusDemoApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusDemoApplication.class, args); } }
6.添加分页配置类
package com.mybatisplusdemo.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; /** * mybatisPlus分页插件配置类 */ @EnableTransactionManagement @Configuration public class MybatisPlusConfig { /** * 分页拦截器 */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
7.添加代码生成器
package com.mybatisplusdemo.config;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
/**
* mybatis-plus 代码生成器
*/
public class MybatisPlusGenerator {
/**
* 包名
*/
private static final String PACKAGE_NAME = "com.mybatisplusdemo";
/**
* 模块名称
*/
private static final String MODULE_NAME = "mybatisPlus-demo";
/**
* 输出文件的路径
*/
private static final String OUT_PATH = "//mybatisPlus-demo//src//main//java";
/**
* xml输出文件的路径
*/
private static final String XML_OUT_PATH = "//mybatisPlus-demo//src//main//resources//mapper";
/**
* 代码生成者
*/
private static final String AUTHOR = "author";
/**
* JDBC相关配置
*/
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://127.0.0.1:3306/devdatabase?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
private static final String USER_NAME = "devuser";
private static final String PASSWORD = "admin";
/**
* <p>
* MySQL 生成演示
* </p>
*/
public static void main(String[] args) {
MybatisPlusGenerator generator = MybatisPlusGenerator.getSingle();
generator.autoGeneration();
}
private static MybatisPlusGenerator single = null;
private MybatisPlusGenerator() {
super();
}
private static MybatisPlusGenerator getSingle() {
if (single == null) {
single = new MybatisPlusGenerator();
}
return single;
}
public void autoGeneration() {
String projectBaseUrl = System.getProperty("user.dir");
String outputDir = projectBaseUrl + OUT_PATH;
String xmlOutputDir = projectBaseUrl + XML_OUT_PATH;
FastAutoGenerator.create(URL, USER_NAME, PASSWORD)
.globalConfig(builder -> {
builder.author(AUTHOR) // 设置作者
.enableSwagger() // 开启 swagger 模式
.outputDir(outputDir); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent(PACKAGE_NAME) // 设置父包名
// .moduleName(MODULE_NAME) // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, xmlOutputDir)); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("buyr_user") // 设置需要生成的表名
.addTablePrefix("buyr_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
运行代码生成器MybatisPlusGenerator 的main方法即可生成对应的java代码文件和xml配置文件
生成后的代码结构如下:
即可调用对应的service接口的CRUD的方法.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南