Mybatis-Plus分页与条件查询

时间:2022-12-30 10:55:34

目录

标准分页功能制作

条件查询

条件查询-null值处理


  • 标准分页功能制作

  • 1:设置分页拦截器作为Spring管理的bean
  • Mybatis-Plus分页与条件查询
  • @Configuration
    public class MpConfig {
        @Bean
        public MybatisPlusInterceptor mpInterceptor(){
            //1.定义MP拦截器
            MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
            //2.添加具体的拦截器
            mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return mpInterceptor;
        }
    }
  • 2:执行分页查询
  • Mybatis-Plus分页与条件查询
  • @Test
        void testGetByPage(){
            IPage page = new Page(1,2);
            personDao.selectPage(page,null);
            System.out.println("当前页码值:"+page.getCurrent());
            System.out.println("每页显示数:"+page.getSize());
            System.out.println("一共多少页:"+page.getPages());
            System.out.println("一共多少条数据:"+page.getTotal());
            System.out.println("数据:"+page.getRecords());
        }
  • 3:开启日志
  • Mybatis-Plus分页与条件查询
  • # 开启mp的日志(输出到控制台)
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • Mybatis-Plus分页与条件查询
  • 条件查询

  • 去掉多余日志方法
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  • <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    </configuration>
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  •   global-config:
        banner: false
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  •   main:
        banner-mode: off
  • Mybatis-Plus分页与条件查询
  • 条件查询-设置查询条件
  • Mybatis-Plus分页与条件查询
  • 格式一:常规格式
  • 格式二:链式编程格式
  • Mybatis-Plus分页与条件查询
  • 格式三:lambda格式(推荐)
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  • 条件查询-组合查询条件
  • 并且(and)
  • 或者(or)
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  • @Test
        void testGetAll1(){
            //方式一:按条件查询
            //QueryWrapper qw = new QueryWrapper();
            //qw.lt("age",15);
            //List<Person> personList = personDao.selectList(qw);
            //System.out.println(personList);
    
            //方式二:Lambda格式按条件查询
            //QueryWrapper<Person> qw = new QueryWrapper<Person>();
            //qw.lambda().lt(Person::getAge,17);
            //List<Person> personList = personDao.selectList(qw);
            //System.out.println(personList);
    
            //方式三:Lambda格式按条件查询
            //LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
            //lqw.lt(Person::getAge,17);
            //List<Person> personList = personDao.selectList(lqw);
            //System.out.println(personList);
    
            //LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
            //lqw.lt(Person::getAge,18);
            //lqw.gt(Person::getAge,15);
            //List<Person> personList = personDao.selectList(lqw);
            //System.out.println(personList);
    
            LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
            //15至18岁之间
            //lqw.lt(Person::getAge,18).gt(Person::getAge,15);
            //大于18岁或者小于15岁
            lqw.lt(Person::getAge,15).or().gt(Person::getAge,18);
            List<Person> personList = personDao.selectList(lqw);
            System.out.println(personList);
        }
  • 条件查询-null值处理

  • 存在问题
  • Mybatis-Plus分页与条件查询
  • Mybatis-Plus分页与条件查询
  • if语句控制条件追加
  • LambdaQueryWrapper lqw = new LambdaQueryWrapper<User>();
  • if(null != userQuery.getAge()){
    • lqw.ge(User::getAge, userQuery.getAge());
  • }
  • if(null != userQuery.getAge2()){
    • lqw.lt(User::getAge, userQuery.getAge2());
  • }
  • List<User> userList = userDao.selectList(lqw);
  • System.out.println(userList);
  • Mybatis-Plus分页与条件查询
  • 条件参数控制
  • LambdaQueryWrapper lqw = new LambdaQueryWrapper<User>();
    • lqw.ge(null != userQuery.getAge(),User::getAge,userQuery.getAge());
    • lqw.lt(null != userQuery.getAge2(),User::getAge, userQuery.getAge2());
  • List<User> userList = userDao.selectList(lqw);
  • System.out.println(userList);
  • 条件参数控制(链式编程)
  • LambdaQueryWrapper lqw = new LambdaQueryWrapper<User>();
  • lqw.ge(null != userQuery.getAge(),User::getAge,userQuery.getAge())
    • .lt(null != userQuery.getAge2(),User::getAge, userQuery.getAge2());
  • List<User> userList = userDao.selectList(lqw);
  • System.out.println(userList);
  • Mybatis-Plus分页与条件查询
  • //模拟页面传递过来的查询数据
    PersonQuery uq = new PersonQuery();
    //uq.setAge("10");
    uq.setAge2(15);
    
    //null判定
    LambdaQueryWrapper<Person> lqw = new LambdaQueryWrapper<Person>();
    //lqw.lt(Person::getAge,uq.getAge2());
    //if(null != uq.getAge()){
    //    lqw.gt(Person::getAge,uq.getAge());
    //}
    
    //先判定第一个参数是否为true,如果为true连接当前条件
    //lqw.lt(null != uq.getAge2(),Person::getAge,uq.getAge2());
    //lqw.gt(null != uq.getAge(),Person::getAge,uq.getAge());
    lqw.lt(null != uq.getAge2(),Person::getAge,uq.getAge2())
       .gt(null != uq.getAge(),Person::getAge,uq.getAge());
    List<Person> personList = personDao.selectList(lqw);
    System.out.println(personList);