mybatis Plus 根据对象的某个字段 查询对象的集合
时间: 2024-06-11 14:09:34 浏览: 151
可以使用 Mybatis Plus 的 QueryWrapper 类来实现根据对象的某个字段查询对象的集合。
例如,假设有一个 User 实体类,其中有一个字段为 name,要查询所有 name 字段为 "张三" 的 User 对象,可以使用如下代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三");
List<User> userList = userDao.selectList(queryWrapper);
```
其中,QueryWrapper 的 eq 方法用于设置等于条件,第一个参数为字段名,第二个参数为字段值。selectList 方法用于查询符合条件的对象集合。需要注意的是,这里的 userDao 是通过 Mybatis Plus 自动生成的 UserMapper 接口实例。
除了 eq 方法,QueryWrapper 还提供了其他常用的方法,如 gt、lt、ge、le、in、like 等,可以根据实际需求自行选择。
相关问题
mybatis-plus 多个字段联合 in
如果你想在 MyBatis-Plus 中进行多个字段联合的 IN 查询,可以使用 `in` 方法和 `Lambda` 表达式结合使用,如下所示:
```java
List<User> userList = userMapper.selectList(
Wrappers.<User>lambdaQuery()
.in(User::getId, 1, 2, 3)
.and(wrapper -> wrapper
.in(User::getName, "Tom", "Jerry")
.or()
.in(User::getAge, 18, 20, 22)
)
);
```
这个例子中,我们使用 `lambdaQuery` 方法创建一个 `LambdaQueryWrapper` 对象,然后使用 `in` 方法传入多个字段和对应的值,其中第一个字段是 `User::getId`,第二个字段是 `User::getName` 和 `User::getAge`,对应的值分别是 `"Tom", "Jerry"` 和 `18, 20, 22`。其中,第二个字段使用了 `and` 方法和一个 `wrapper` 参数,表示这两个查询条件需要一起生效,而 `wrapper` 参数则是用于构建嵌套查询条件的。在 `wrapper` 中,我们使用 `in` 方法和 `or` 方法将两个查询条件连接起来,以实现多个字段联合的 IN 查询。最后,使用 `selectList` 方法执行查询,返回符合条件的结果集。
需要注意的是,如果其中一个字段的值是空集合或者 null,那么整个查询条件就会失效。此时,可以使用 `or` 方法将多个查询条件连接起来,以避免这种情况的发生。同时,如果你需要更加复杂的查询条件,可以使用 MyBatis-Plus 提供的其他方法和条件构造器来实现。
mybatis plus查询语句
MyBatis-Plus提供了一些方便的查询语句,可以帮助我们进行数据库查询操作。其中,通过使用QueryWrapper对象,我们可以方便地构建查询条件。
基本查询:
- eq:表示相等
- gt:表示大于
- lt:表示小于
- ne:表示不等
- ge:表示大于等于
- le:表示小于等于
- between:表示范围内
- notBetween:表示不在范围内
- in:表示包含在指定集合中
- notIn:表示不包含在指定集合中
模糊查询:
- like:表示模糊匹配
- notLike:表示模糊不匹配
- likeLeft:表示左模糊匹配
- likeRight:表示右模糊匹配
排序:
- orderBy:表示排序
- OrderByAsc:表示升序排序
- OrderByDesc:表示降序排序
逻辑查询:
- or:表示或者关系
- and:表示并且关系
指定查询字段:
- select:表示指定查询字段
特殊例子:
- 聚合与分组查询,无法使用lambda表达式来完成MP,可以直接在DAO接口中使用MyBatis的方式实现
这些是MyBatis-Plus查询语句的一些常用方法和示例,你可以根据具体的需求来使用相应的方法来构建查询条件。
阅读全文