mybatisplus分页查询学习

mybatisplus的配置类

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor()
    {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

1.测试类-普通分页 没有查询条件

    @Test
    public void testSelectPage()
    {
        //封装Page对象作为分页查询参数对象
        Page<User> page = new Page<>(3, 5);// 当前页,每页显示条数
        //Page对象既可以作为分页查询参数的封装对象,也可以作为分页查询结果的保存对象
        // 调用selectPage方法,传入分页对象作为第一个参数,第二个参数是查询条件
        Page<User> pageResult = userMapper.selectPage(page, null);
        log.info(pageResult.getRecords());
    }

2.带有查询条件的分页查询QueryWrapper

QueryWrapper

wrapper(包装)查询条件对象

    @Test
    public void testSelectPageWithGtLt()
    {
        // 查询条件
        QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
        userqueryWrapper.gt("id",5).lt("id",10);
        
        List<User> userList=userMapper.selectList(userqueryWrapper);

        log.info(userList);
    }
    @Test
    public void testSelectPageWithLike()
    {
        // 查询条件
        QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
        userqueryWrapper.like("username","a")
                .orderByDesc("id");

        List<User> userList=userMapper.selectList(userqueryWrapper);

        log.info(userList);
    }

3.多条件分页查询

    @Test
    public void testSelectPage()
    {
        // 查询条件
        QueryWrapper<User> userqueryWrapper = new QueryWrapper<>();
        userqueryWrapper.like("username","a")
                .orderByDesc("id");


        // 分页查询
        Page<User> page = new Page<>(1, 4);

        // 执行查询
        Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);

        log.info(pageResult.getRecords());
    }

4.lambda格式查询条件分页查询

LambdaQueryWrapper

    @Test
    public void testSelectPageLambda()
    {
        // 查询条件
        LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
        userqueryWrapper.gt(User::getId,10)
                .like(User::getUsername,"a")
                .orderByDesc(User::getId);

        // 分页查询
        Page<User> page = new Page<>(1, 4);

        // 执行查询
        Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);

        log.info(pageResult.getRecords());
    }

5.wrapper动态条件拼接

    @Test
    public void testSelectPageLambdaCondition()
    {
        User user=new User();// 假设是前端传来的条件对象
        user.setId(20);
        user.setUsername("a");
        // 查询条件
        LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
        userqueryWrapper.gt(user.getId()!=null,User::getId,10)
                .like(user.getUsername()!=null && user.getUsername()!="",User::getUsername,"a")
                .orderByDesc(user.getId()!=null,User::getId);

        // 分页查询
        Page<User> page = new Page<>(1, 4);

        // 执行查询
        Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);

        log.info(pageResult.getRecords());
    }

判断条件也可以写成

Objects.nonNull(user.getId())

6.条件或者

两个条件之间添加.or()

7.查询投影 查询指定的字段

默认查询所有字段,需要查询指定的字段

lambda添加select

1、查询模型类存在的部分属性

    @Test
    public void testSelectPageWithSelect()
    {
        LambdaQueryWrapper<User> userqueryWrapper = new LambdaQueryWrapper<>();
        userqueryWrapper.select(User::getId,User::getUsername,User::getNickName);
        User user=new User();// 假设是前端传来的条件对象
        user.setId(20);
        user.setUsername("a");
        // 查询条件
        userqueryWrapper.gt(Objects.nonNull(user.getId()),User::getId,10)
                .or()
                .like(user.getUsername()!=null && user.getUsername()!="",User::getUsername,"a")
                .orderByDesc(user.getId()!=null,User::getId);

        // 分页查询
        Page<User> page = new Page<>(1, 4);

        // 执行查询
        Page<User> pageResult=userMapper.selectPage(page,userqueryWrapper);

        log.info(pageResult.getRecords());
    }
2、查询模型类中未定义的属性

通过selectMaps查询

//通过selectMaps查询
//mybatis-plus将查询到的每一条数据中的列名作为map的key,列的值作为map的value,
//每一条数据封装为一个map,将所有的map封装为一个list集合返回
List<Map<String,Object>> mapList=userMapper.selectMaps(userqueryWrapper);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值