查询专栏:MP默认查询原则
查询的是数据库列名非实体类属性。
需求思路分析
7. (年龄小于40或者邮箱不为空)并且名字为王姓
sql:(age < 40 or email id not null) and name like '王%'
8. 年龄为30、31、34、35
sql:age in (30、31、34、35 )
9. 只返回满足条件的其中一条语句即可
* limit 1
* <p>
* 年龄为30、31、34、35
* age in (30、31、34、35 )
二、需求实现
2.1 需求实战07
/**
* 7. (年龄小于40或者邮箱不为空)并且名字为王姓
* sql:(age < 40 or email id not null) and name like '王%'
*/
@Test
public void selectByWrapper7() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.nested(wq -> wq.lt("age", 40)
.or()
.isNotNull("email"))
.likeRight("name", "王");
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式: SELECT id,name,age,email,manager_id,create_time FROM user
WHERE ( age < ? OR email IS NOT NULL ) AND name LIKE ?
*/
注:
and优先级比or高,也就是在一个sql语句中有and和or限制性and后执行or
如果前面有个括号,or在括号里面,括号右边有and,这种情况会限制性括号里面的在执行括号右边的and
// 例如:
// 先执行or后执行and
SELECT id,name,age,email,manager_id,create_time FROM user
WHERE ( age < ? OR email IS NOT NULL ) AND name LIKE ?
// 先执行and后执行or
SELECT id,name,age,email,manager_id,create_time FROM user
WHERE age < ? OR email IS NOT NULL AND name LIKE ?
2.2 需求实战08
/**
* 8. 年龄为30、31、34、35
* age in (30、31、34、35 )
*/
@Test
public void selectByWrapper8() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("age", Arrays.asList(30, 31, 34, 35));
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式: SELECT id,name,age,email,manager_id,create_time FROM user
WHERE age IN (?,?,?,?)
*/
2.3 需求实战09
/**
* 9. 只返回满足条件的其中一条语句即可
* limit 1
* <p>
* 年龄为30、31、34、35
* age in (30、31、34、35 )
* <p>
* 有sql注入危险,不建议使用,或者确认安全可以使用
*/
@Test
public void selectByWrapper9() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("age", Arrays.asList(30, 31, 34, 35)).last("limit 1");
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式: SELECT id,name,age,email,manager_id,create_time FROM user
WHERE age IN (?,?,?,?)
*/
想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!