MyBatis-Plus_查询进阶02

查询专栏:MP默认查询原则
查询的是数据库列名非实体类属性。

一、需求思路分析

1. 名字包含雨并且年龄小于40
sql:name like '%雨%' and age < 40

2. 名字包含雨并且年龄大于等于20且小于等于40并且邮箱不为空
sql:name like '%雨%' and age between 20 and 40 and email is not null

3. 名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同的按照id升序排列
 sql:name like '王%' or age >= 25 order by age desc,id asc

4. 创建日期为2019年2月14日并且指数上级为名字为王姓
sql:date_format(dateColumn,'%Y-%m-%d') and manager_id in (select id from user where name like '王%')

二、需求实战

2.1 需求实现01

    /**
     * 1. 名字包含雨并且年龄小于40
     * sql:name like '%雨%' and age < 40
     */
    @Test
    public void selectByWrapper() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", "雨")
                    .lt("age", 40);

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
       sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
     */

2.2 需求实现02

   /**
     * 2. 名字包含雨并且年龄大于等于20且小于等于40并且邮箱不为空
     * sql:name like '%雨%' and age between 20 and 40 and email is not null
     */
    @Test
    public void selectByWrapper2() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", "o")
                    .between("age", 20, 28)
                    .isNotNull("email");

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
       sql形式: SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL
     */

2.3 需求实现03

/**
     * 3. 名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同的按照id升序排列
     * sql:name like '王%' or age >= 25 order by age desc,id asc
     */
    @Test
    public void selectByWrapper3() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.likeRight("name", "王")
                    .or()
                    .ge("age", 25)
                    .orderByDesc("age")
                    .orderByAsc("id");

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
       sql形式: SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? OR age >= ? ORDER BY age DESC , id ASC
     */

2.4 需求实现04

   /**
     * 4. 创建日期为2019年2月14日并且指数上级为名字为王姓
     * sql:date_format(dateColumn,'%Y-%m-%d') and manager_id in (select id from user where name like '王%')
     */
    @Test
    public void selectByWrapper4() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-14")
                    .inSql("manager_id", "select id from user where name like '王%'");

        List<User> userList = userMapper.selectList(queryWrapper);
        userList.forEach(System.out::println);
    }
    /*
       sql形式: SELECT id,name,age,email,manager_id,create_time FROM user
       WHERE date_format(create_time,'%Y-%m-%d') = ? AND manager_id IN (select id from user where name like '王%')
     */

想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!

猜你喜欢

转载自blog.csdn.net/weixin_40816738/article/details/93351863