引言
在现代 java 开发中,mybatis-plus 作为 mybatis 的增强工具,以其简化 crud 操作和无需编写 xml 映射文件的特点,受到了开发者的青睐。
本篇文章将带你一步步整合 spring boot 与 mybatis-plus,并展示其在实际开发中的应用,包括事务管理、安全性考虑、性能优化等高级特性。

环境准备
1.1 导入依赖
在 pom.xml 文件中添加 mybatis-plus 的起步依赖:
<dependency>
<groupid>com.baomidou</groupid>
<artifactid>mybatis-plus-boot-starter</artifactid>
<version>3.4.0</version>
</dependency>确保使用 maven helper 插件检查依赖冲突。
1.2 修改配置文件
在 application.yml 中配置数据库连接和 mybatis-plus 参数:
server:
port: 8889
spring:
datasource:
url: jdbc:mysql://localhost:3306/boot_mybatis?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true
username: root
password: 123456
mybatis-plus:
mapper-locations: mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.stdoutimpl
map-underscore-to-camel-case: true
type-aliases-package: com.example.demo.entity1.3 iuser 实体类
定义 iuser 实体类,映射数据库中的用户表:
@data
@tablename("t_user")
public class iuser {
@tableid(value = "u_id", type = idtype.auto)
private integer uid;
@tablefield("user_name")
private string username;
private string email;
private string password;
private date birth;
private int gender;
}1.4 usermapper 接口
创建 usermapper 接口,继承 basemapper:
@mapper
public interface iusermapper extends basemapper<iuser> {}使用
2.1 基础增删改查
新增一条 user 数据
@autowired
private iusermapper usermapper;
@test
public void insertuser() {
iuser user = new iuser();
user.setusername("曹操");
user.setpassword("88888888");
user.setemail("321@qin.com");
usermapper.insert(user);
}根据条件删除 user
@test
public void deleteuserbyid() {
usermapper.deletebyid(1001);
}2.2 批量操作
批量新增
@test
public void batchinsertusers() {
list<iuser> users = arrays.aslist(
new iuser().setusername("关羽").setpassword("258"),
new iuser().setusername("关公").setpassword("7530"),
new iuser().setusername("关项").setpassword("159")
);
usermapper.insertbatch(users);
}2.3 查询条件构造器【querywrapper】使用
使用 querywrapper 构造查询条件:
@test
public void selectusersbyquerywrapper() {
querywrapper<iuser> querywrapper = new querywrapper<>();
querywrapper.eq("user_name", "项羽").like("email", "123@163.com");
usermapper.selectlist(querywrapper);
}2.4 修改条件构造器【updatewrapper】使用
使用 updatewrapper 构造更新条件:
@test
public void updateuserbyupdatewrapper() {
updatewrapper<iuser> updatewrapper = new updatewrapper<>();
updatewrapper.eq("user_name", "王小五").set("email", "wxw@qq.com");
usermapper.update(null, updatewrapper);
}2.5 事务管理
事务的配置
在服务层方法上使用 @transactional 注解来确保操作的原子性。
@service
public class userservice {
@autowired
private iusermapper usermapper;
@transactional
public void updateuserandsendemail(string username, string newemail) {
// 更新用户信息
iuser user = new iuser();
user.setusername(username);
user.setemail(newemail);
usermapper.updatebyid(user);
// 发送邮件操作(示例)
sendemailtouser(username, newemail);
}
private void sendemailtouser(string username, string email) {
// 邮件发送逻辑
}
}事务的传播行为
spring 支持多种事务传播行为,可以根据业务需求配置。
2.6 安全性考虑
防止 sql 注入
mybatis-plus 通过预编译的语句防止 sql 注入。
数据加密
在应用层对敏感数据进行加密,比如用户密码的存储和验证。
public class securityutils {
public static string encryptpassword(string password) {
// 加密密码逻辑
}
public static boolean checkpassword(string rawpassword, string encryptedpassword) {
// 验证密码逻辑
}
}代码生成器

3.1 准备项目和数据库表
准备一个 spring boot 空项目,并创建数据库表:
create table `t_user` (
`u_id` int not null auto_increment comment '主键',
`user_name` varchar(10) not null comment '用户登录名',
`email` varchar(50) default null comment '邮箱',
`pass_word` varchar(30) not null comment '密码',
...
primary key (`u_id`)
) engine=innodb default charset=utf8mb3;3.2 引入依赖
在 pom.xml 中添加代码生成器的依赖:
<dependency>
<groupid>com.baomidou</groupid>
<artifactid>mybatis-plus-generator</artifactid>
<version>3.4.0</version>
</dependency>
<dependency>
<groupid>org.apache.velocity</groupid>
<artifactid>velocity-engine-core</artifactid>
<version>2.0</version>
</dependency>3.3 配置文件
在 application.yml 中配置数据库连接:
spring:
datasource:
url: jdbc:mysql://localhost:3306/generate?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.driver3.4 测试工具类
创建一个测试工具类,用于自动生成代码:
public class codegenerator {
public static void main(string[] args) {
autogenerator mpg = new autogenerator();
mpg.setdatasource(new datasourceconfig.builder()
.seturl("jdbc:mysql://localhost:3306/generate?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true")
.setdrivername("com.mysql.cj.jdbc.driver")
.setusername("root")
.setpassword("123456")
.build());
mpg.setglobalconfig(new globalconfig.builder()
.setoutputdir(system.getproperty("user.dir") + "/src/main/java")
.setauthor("your name")
.setopen(false)
.build());
mpg.setpackageinfo(new packageconfig.builder()
.setparent("com.example.demo")
.setentity("entity")
.setmapper("mapper")
.setservice("service")
.setcontroller("controller")
.build());
mpg.setstrategy(new strategyconfig.builder()
.setinclude("t_user")
.build());
mpg.execute();
}
}3.5 生成目录结构
运行上述测试工具类,生成项目的目录结构。
3.6 调整和测试
调整生成的 mapper xml 文件位置,并在 mapper 接口上添加 @mapper 注解。
在启动类上添加 @mapperscan 注解。然后进行测试,例如新增一个用户:
@autowired
private tusermapper usermapper;
@test
public void testinsertuser() {
tuser user = new tuser();
user.setusername("王中王");
user.setpassword("wzw123456");
usermapper.insert(user);
}总结与学习成果
本篇文章,您将能够获得以下知识和技能:
- 环境搭建:您将学会如何在 spring boot 项目中引入 mybatis-plus,并配置必要的依赖和数据库连接。
- 实体类与mapper接口:您将了解如何创建实体类来映射数据库表,以及如何定义 mapper 接口来操作数据库。
- crud操作:您将掌握使用 mybatis-plus 进行基础的增删改查操作,包括单条记录和批量操作的处理。
- 条件构造器:您将学会使用 querywrapper 和 updatewrapper 来构建复杂的查询和更新条件,提高代码的可读性和维护性。
- 事务管理:您将了解如何在服务层方法上使用
@transactional注解来确保数据库操作的原子性。 - 安全性实践:您将学到如何防止 sql 注入攻击,并对敏感数据进行加密处理,增强应用的安全性。
- 性能优化:您将探索查询优化技巧和缓存策略,以提高数据库操作的性能。
- 版本兼容性与迁移:您将了解不同版本的 mybatis-plus 之间的差异,并学会如何将旧版本迁移到新版本。
- 实际应用场景:您将通过实际案例分析,了解 mybatis-plus 在解决实际问题中的应用。
- 监控与日志:您将学会如何配置和使用 mybatis-plus 的日志记录功能,以及如何监控数据库操作的性能。
- 代码生成器:您将掌握如何使用 mybatis-plus 提供的代码生成器来快速生成项目代码,提高开发效率。
通过这些内容,您不仅能够深入了解 mybatis-plus 的强大功能,还能够将这些知识应用到实际项目中,提升您的开发能力和项目质量。希望这篇文章能够帮助您在 spring boot 和 mybatis-plus 的学习之路上更进一步。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论