eq:单字段等于查询
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_name", "lisi");
// 以防重名用selectList而不是selectOne方法,属于业务逻辑范畴,不必纠结
List<UserInfo> userInfos = UserInfoMapper.selectList(queryWrapper);
ne
:不等于
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("user_name", "lisi");
List<UserInfo> userInfos = UserInfoMapper.selectList(queryWrapper);
其他常用的还有:
-
gt
: 大于 -
ge
:大于等于 -
lt
:小于 -
le
: 小于等于 -
between
(R column, Object val1, Object val2) - notBetween(R column, Object val1, Object val2)
- like(R column, Object val)
- notLike(R column, Object val)
- likeLeft(R column, Object val)
- likeRight(R column, Object val)
- isNull(R column)
-
isNotNull
: 非空
...
select不去查全部字段
mybatis-plus select查询默认是查全部字段,有两种方法可以指定要查询的字段
只需要查询出user_name 和 user_code 两个字段的数据,可以使用queryWrapper的select()方法指定要查询的字段
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user_name", "user_code");
List<UserInfo> userInfos = UserInfoMapper.selectList(queryWrapper);
要查询出除deptment_id和create_time外其它所有字段的数据,同样也是使用queryWrapper的select()方法
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.select(UserInfo.class, info ->
!StringUtils.equals(info.getColumn(),"deptment_id")
&& !StringUtils.equals(info.getColumn(), "create_time"));
List<UserInfo> userInfos = userMapper.selectList(queryWrapper);
userInfos.forEach(System.out::println);
Distinct去重功能
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT user_name", "user_code");
List<UserInfo> userInfos = UserInfoMapper.selectList(queryWrapper);
排序
queryWrapper 对象调用如下方法:
这些方法基本上见名知意,就不一一解释了,可以自行去尝试
in条件
Collection<String> userCodeSet = Sets.newHashSet();
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT user_name", "user_code");
queryWrapper.in("user_code", userCodeSet);
List<UserInfo> userInfos = UserInfoMapper.selectList(queryWrapper);
in 条件操作方法的第二个参数是Collection 类型,所以list、set皆可
其他重载方法以及notIn方法如下图: