官网:简介 | MyBatis-Plushttps://baomidou.com/introduce/
3.X版本插件使用、
1. 分页插件
配置插件(不能用的情况去官网看看最新的)
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}
使用分页查询
@Test
public void testPageList() {
Page<User> page = new Page<User>(1, 2);
userMapper.selectPage(page, null);
// 输出page对象分页查询信息
System.out.println("总条数:" + page.getTotal());
System.out.println("每页显示条数:" + page.getSize());
System.out.println("总页数:" + page.getPages());
System.out.println("当前页:" + page.getCurrent());
System.out.println("是否有上一页:" + page.hasPrevious());
System.out.println("是否有下一页:" + page.hasNext());
System.out.println("查询结果:" + page.getRecords());
}
执行结果:
总条数:5
每页显示条数:2
总页数:3
当前页:1
是否有上一页:false
是否有下一页:true
查询结果:[User(id=1, name=Jone, age=18, email=test1@baomidou.com),
User(id=2, name=Jack, age=20, email=test2@baomidou.com)]
2. 性能分析插件
性能分析拦截器,用于输出每条 SQL 语句及其执行时间。
该插件 3.2.0 以上版本移除推荐使用第三方扩展 执行SQL分析打印 功能
/**
* 自定义配置
* @author Administrator
*
*/
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* SQL执行效率插件
*/
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
}
逻辑删除的工作原理
- 插入:逻辑删除字段的值不受限制。
- 查找:自动添加条件,过滤掉标记为已删除的记录。
- 更新:防止更新已删除的记录。
- 删除:将删除操作转换为更新操作,标记记录为已删除。
例如:
删除:update user set deleted=1 where id = 1 and deleted=0
查找:select id,name,deleted from user where deleted=0
就是用户点了删除,但在数据库只是修改,用户界面页看不到,减轻了用户误删,恢复数据轻松