04 mybatis-plus条件构造器

本文介绍了mybatis-plus中的条件构造器,包括基本的比较操作、模糊查询、指定查询列以及排序等核心功能。

条件构造器

基本比较操作
   /* 基本比较操作
    SELECT id,user_name,password,name,age,email,birthday FROM tb_user WHERE name = ? AND age > ? AND id IN (?,?,?)
     张三(String), 15(Integer), 1(Long), 2(Long), 3(Long)
     */
    @Test
    public void testEq(){
        //条件
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name","张三");
        queryWrapper.gt("age",15);
        queryWrapper.in("id",Arrays.asList(1L,2L,3L));
        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
    }

    /* Lambda方式构造条件:
     SELECT id,user_name,password,name,age,email,birthday FROM tb_user WHERE name = ? AND age > ? AND id IN (?,?,?)
     张三(String), 15(Integer), 1(Long), 2(Long), 3(Long)
     */
    @Test
    public void testEq2(){
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getName,"张三");
        queryWrapper.eq(User::getAge,15);
        queryWrapper.in(User::getId,Arrays.asList(1L,2L,3L));

        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
    }

    /*
    关于 condition 的作用:条件判断 结果为true,才拼接这个条件;结果false则不拼接
    eq(boolean condition, R column, Object val)
    in(boolean condition, R column, Object... values)
    
    name 条件判断 结果为true,拼接这个条件
    SELECT id,user_name,password,name,age,email,birthday FROM tb_user WHERE name = ? AND age = ? AND id IN (?,?,?)
    张三(String), 15(Integer), 1(Long), 2(Long), 3(Long)

    name 条件判断 结果为false,不拼接这个条件
    Preparing: SELECT id,user_name,password,name,age,email,birthday FROM tb_user WHERE age = ? AND id IN (?,?,?)
    15(Integer), 1(Long), 2(Long), 3(Long)
     */
    @Test
    public void testEq3(){
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        String name = "张三";
        Integer age = 15;
        queryWrapper.eq(name!=null&&!name.equals(""),User::getName,name);
        queryWrapper.eq(age!=null&&!age.equals(""),User::getAge,age);
        queryWrapper.in(User::getId,Arrays.asList(1L,2L,3L));

        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
    }
模糊查询
    /*
    模糊查询 SELECT id,user_name,password,name,age,email,birthday FROM tb_user WHERE name LIKE ?
    like       LIKE '%值%'
    notLike    NOT LIKE '%值%'
    likeLeft   LIKE '%值'
    likeRight  LIKE '值%'
     */
    @Test
    public void testLike(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","张");
        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
        
        /*  Lambda方式构造条件:
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(User::getName, "张");
        List<User> users = userMapper.selectList(queryWrapper);
        System.out.println(users);
         */
    }
指定查询列
    }

    /*
    在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段。
    SELECT id,name,age FROM tb_user WHERE name = ? OR age = ?
     */
    @Test
    public void testSelect(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("name", "李四")
                .or()
                .eq("age", 24)
                .select("id", "name", "age");   //指定查询的列
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
        /* Lambda方式构造条件:
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getName, "李四")
        .or()
        .eq(User::getAge, 24)
        .select(User::getId, User::getName, User::getAge);
         */
    }
排序
    /*
    排序
    SELECT id,user_name,password,name,age,email,birthday FROM tb_user ORDER BY id DESC , age DESC
    orderByAsc 升序排序
    orderByDesc  降序排序
    orderBy 自定义排序规则  true有效,false无效 ,参数2:是否升序,参数3..
     */
    @Test
    public void testDesc() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
//        wrapper.orderByDesc("id","age");
        wrapper.orderBy(true, true, "id", "age");  //或 orderBy(true, true, "id").orderBy(true, true, "age")
        /*
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.orderByDesc(User::getAge);
        wrapper.orderByDesc(User::getId);

         */
        List<User> users = this.userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岿然如故

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值