一、Mybatisplus多条件查询and
Mybatisplus是一款优秀的ORM框架,能够极大的提高开发效率,其中多条件查询是非常常见的需求。而and运算符(使用and关键字)是最常见的多条件查询方式之一。以下是一个示例代码:
/** * 多条件查询示例 */ public ListqueryUsers(String name, Integer age, String email) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtils.isNotBlank(name)) { queryWrapper.lambda().eq(User::getName, name); } if (age != null) { queryWrapper.lambda().eq(User::getAge, age); } if (StringUtils.isNotBlank(email)) { queryWrapper.lambda().eq(User::getEmail, email); } return userDao.selectList(queryWrapper); }
在上面的示例中,我们利用了QueryWrapper来实现多条件查询,关键代码就是构建QueryWrapper。首先我们创建了一个空的QueryWrapper,随后再判断是否传入了对应的参数,如果有则加入相关的查询条件。
二、Mybatisplus查询方法
除了使用and关键字以外,Mybatisplus还提供了诸如or,eq,ne,gt,lt等各种查询方法。以下是一些常见的查询方法:
- eq : 等于
- ne : 不等于
- gt : 大于
- ge : 大于等于
- lt : 小于
- le : 小于等于
- like : 模糊匹配
- in : 包含
- not in : 不包含
示例代码:
queryWrapper.lambda().eq(User::getName, "张三"); queryWrapper.lambda().ne(User::getGender, "男"); queryWrapper.lambda().gt(User::getAge, 18); queryWrapper.lambda().ge(User::getSalary, 10000); queryWrapper.lambda().lt(User::getAge, 30); queryWrapper.lambda().le(User::getSalary, 20000); queryWrapper.lambda().like(User::getName, "张%"); //查询名字以“张”开头的用户 queryWrapper.lambda().in(User::getId, 1, 2, 3); queryWrapper.lambda().notIn(User::getId, 1, 2, 3);
三、Mybatisplus查询
除了利用QueryWrapper进行多条件查询以外,Mybatisplus还提供了一些其他的查询方法,例如:selectByMap,selectById等等。以下是一些常见的查询方法:
- selectById : 根据id查询记录
- selectBatchIds : 根据id批量查询记录
- selectByMap : 根据Map条件查询记录
- selectOne : 根据条件查询唯一一条记录
- selectList : 根据条件查询多条记录
- selectMaps : 根据条件查询多条记录,以Map形式返回
- selectObjs : 根据条件查询单个属性,例如selectObjs("select name,age from user where id=1")
示例代码:
//根据id查询记录 User user = userDao.selectById(1); //根据id批量查询记录 ListuserList = userDao.selectBatchIds(Arrays.asList(1, 2, 3)); //根据Map条件查询记录 Map columnMap = new HashMap(); columnMap.put("name", "张三"); columnMap.put("age", 18); List userList = userDao.selectByMap(columnMap); //根据条件查询唯一一条记录 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(User::getAge, 18); User user = userDao.selectOne(queryWrapper); //根据条件查询多条记录 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(User::getGender, "男"); List userList = userDao.selectList(queryWrapper); //根据条件查询多条记录,以Map形式返回 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().ge(User::getAge, 18); List