查询专栏: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
让我们一起进步!!!