栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatisPlus(六)——插件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatisPlus(六)——插件

目录​​​​​​​

分页插件

自定义分页

UserMapper中定义接口方法

UserMapper.xml中编写SQL 

测试

乐观锁

乐观锁与悲观锁

模拟修改冲突

乐观锁实现流程

Mybatis-Plus实现乐观锁


分页插件

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

  • 添加配置类

        我们之前实现分页功能的时候,先写了查询功能,然后它会对我们当前的查询功能进行拦截,然后在我们实现功能的基础上,然后进行一些额外的操作,以达到我们额外的功能。

        那既然我们当前要配置这样的一个bean,那我们首先什么就需要把咱们的一个对象创建出来,但是这个是用来配置买MP插件,那我们具体要配置什么插件就需要在咱们的插件对象中,再添加一个内部插件,使用interceptor.addInnerInterceptor()方法,方法参数为要使用的插件,当前所使用的是PaginationInnerInterceptor(DbType.MYSQL));

@Configuration
@MapperScan("com.atguigu.mybatisplus.mapper") //可以将主类中的注解移到此处
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new
                PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
  • 测试类

        selectPage方法就是来查询分页数据的,他有两个参数 ,第一个是分页对象,第二个是条件构造器。

    @Test
    public void testPage(){
        //设置分页参数
        Page page = new Page<>(1, 5);
        userMapper.selectPage(page, null);
        //获取分页数据
        List list = page.getRecords();
        list.forEach(System.out::println);
        System.out.println("当前页:"+page.getCurrent());
        System.out.println("每页显示的条数:"+page.getSize());
        System.out.println("总记录数:"+page.getTotal());
        System.out.println("总页数:"+page.getPages());
        System.out.println("是否有上一页:"+page.hasPrevious());
        System.out.println("是否有下一页:"+page.hasNext());
    }

自定义分页

        我们当前的查询是我们自定义的时候,那我们现在需要在自己写的sql语句中来通过分页插件实现分页功能,这个时候我们应该如何做?

UserMapper中定义接口方法

根据年龄查询用户列表,并分页显示:

  • @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 
  • @param age 年龄

        接口方法的返回值是谁?我们可以参照select page方法,首先这个方法的返回值是一个IPage,要与他保持一致,且方法的第一个参数为page。

        接口方法的返回值一定是一个page对象,这个时候如果我们要想通过这个分页插件来作用于我们自己所写的sql的话,那我们当前这个方法的第一个参数必须得是一个page对象。

IPage selectPageVo(@Param("page") Page page, @Param("age") Integer age);

UserMapper.xml中编写SQL 
    
    id,username,age,email