一文带你了解如何正确使用MyBatis Plus
MyBatis Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上,提供了更加便捷的方法和功能。本文将介绍如何正确使用 MyBatis Plus,包括安装、配置、使用和优化等方面。
安装和配置
在使用 MyBatis Plus 之前,需要进行一些准备工作,包括 Maven 依赖的配置和配置文件的编写等。
Maven 依赖配置
在 pom.xml 中添加以下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
需要注意的是,${mybatis-plus.version}
是指 MyBatis Plus 的版本号,需要根据实际情况进行修改。
配置文件编写
在 application.yml
中添加以下配置:
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
type-aliases-package: com.example.entity
其中 mapper-locations
指定了 MyBatis Mapper 文件的位置,type-aliases-package
指定了 MyBatis 实体类的包路径。
基本使用
接下来,介绍如何使用 MyBatis Plus 进行 CRUD 操作,以及分页查询。
实体类编写
首先,需要编写实体类,例如:
public class User {
private Integer id;
private String username;
private String password;
// getter、setter 省略
}
需要注意的是,在实体类中必须定义主键字段和对应的 getter 和 setter 方法,否则 MyBatis Plus 无法正常使用。
Mapper 文件编写
接下来,需要编写 Mapper 文件,例如:
public interface UserMapper extends BaseMapper<User> {
}
需要注意的是,Mapper 接口需要继承 BaseMapper<T>
接口,并指定泛型类型为实体类。
增删改查操作
使用 MyBatis Plus 进行增删改查操作非常简便,例如:
@Autowired
private UserMapper userMapper;
// 新增用户
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userMapper.insert(user);
// 删除用户
userMapper.deleteById(1);
// 更新用户
User user = userMapper.selectById(2);
user.setPassword("654321");
userMapper.updateById(user);
// 查询用户
User user = userMapper.selectById(2);
List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("username", "test"));
需要注意的是,在进行查询操作时,使用了 QueryWrapper
类进行条件查询,使用条件构造器可以灵活设置查询条件。
分页查询
MyBatis Plus 同样提供了方便的分页查询功能,例如:
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<User>().eq("username", "test"));
List<User> userList = userPage.getRecords();
需要注意的是,要使用分页查询功能,需要先创建 Page<T>
并指定当前页和每页数量,然后使用 selectPage(page, wrapper)
方法进行查询,其中 wrapper
为条件构造器。
应用优化
MyBatis Plus 提供了多种优化手段,包括缓存、批量操作、乐观锁和性能分析等。
缓存
MyBatis Plus 提供了两种缓存模式:一级缓存和二级缓存。
一级缓存是指 SqlSession 级别的缓存,通常情况下无需主动配置,但需要注意的是,一级缓存只在一个 SqlSession 内有效,如果有多个 SqlSession,需要手动控制缓存。
二级缓存是指 Mapper 级别的缓存,需要进行主动配置。例如,在 Mapper 文件中添加以下配置:
@CacheNamespace(implementation = MybatisRedisCache.class, eviction = MybatisRedisCache.class)
public interface UserMapper extends BaseMapper<User> {
}
其中,MybatisRedisCache
为自定义的缓存实现类,可以使用 Redis 等进行缓存。
批量操作
MyBatis Plus 支持批量插入、批量更新和批量删除等操作,可以大大提高性能。
List<User> userList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setUsername("test" + i);
user.setPassword("123456");
userList.add(user);
}
userMapper.insertList(userList);
乐观锁
MyBatis Plus 支持乐观锁机制,可以用于解决并发冲突等问题。
需要在实体类中添加版本号字段。
public class User {
private Integer id;
private String username;
private String password;
private Integer version;
// getter、setter 省略
}
然后,在进行更新操作时,使用 update
方法,并传入实体类的版本号信息。
User user = userMapper.selectById(2);
user.setPassword("654321");
userMapper.update(user, new UpdateWrapper<User>().eq("version", user.getVersion()));
性能分析
MyBatis Plus 提供了性能分析插件,可以用于分析 SQL 执行情况,帮助优化应用性能。
在 application.yml
中添加以下配置:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 性能分析插件配置
plugin:
p6spy:
enabled: true
然后,在启动应用时,可以在控制台看到所有执行的 SQL 语句及其参数和返回结果,方便进行性能分析。
示例
示例 1:简单的 CRUD 操作
@Autowired
private UserMapper userMapper;
// 新增用户
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userMapper.insert(user);
// 删除用户
userMapper.deleteById(1);
// 更新用户
User user = userMapper.selectById(2);
user.setPassword("654321");
userMapper.updateById(user);
// 查询用户
User user = userMapper.selectById(2);
List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("username", "test"));
示例 2:分页查询和性能分析
@Autowired
private UserMapper userMapper;
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<User>().eq("username", "test"));
List<User> userList = userPage.getRecords();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你了解如何正确使用MyBatisPlus - Python技术站