基本比较操作
/* 基本比较操作
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);
}
}
本文介绍了mybatis-plus中的条件构造器,包括基本的比较操作、模糊查询、指定查询列以及排序等核心功能。

被折叠的 条评论
为什么被折叠?



