Java中mybatis plus查询对象集合,只查询单个对象属性,并返回该属性的list集合
时间: 2024-02-02 09:03:56 浏览: 85
你可以使用Mybatis Plus提供的LambdaQueryWrapper来实现该功能。LambdaQueryWrapper是Mybatis Plus提供的一种更加方便的查询方式,可以使用Lambda表达式来构造查询条件。
具体操作步骤如下:
1. 导入Mybatis Plus和相关依赖。
2. 创建LambdaQueryWrapper对象,指定需要查询的实体类类型。
3. 在LambdaQueryWrapper对象中指定查询条件,使用Lambda表达式来构造查询条件。
4. 调用Mybatis Plus提供的selectObjs方法查询数据,并使用Java 8中的Stream API将查询结果转换为需要的属性集合。
示例代码如下:
```java
List<String> nameList = new LambdaQueryWrapper<User>()
.select(User::getName) // 指定查询的属性
.eq(User::getGender, 1) // 指定查询条件
.list()
.stream()
.map(User::getName) // 转换为需要的属性集合
.collect(Collectors.toList());
```
以上代码将查询gender为1的所有User对象的name属性,并返回name属性的List集合。
相关问题
mybatis-plus 单个查询条件支持多选查询
Mybatis-Plus支持多种查询方式,包括单个条件多选查询。您可以使用LambdaQueryWrapper中的in方法来实现单个条件多选查询。例如,假设您有一个User实体类,其中有一个属性叫做age,您想查询年龄为18、20和22的所有用户。您可以使用以下代码:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.in(User::getAge, 18, 20, 22);
List<User> userList = userService.list(wrapper);
```
这里的in方法接收两个参数,第一个参数是要查询的字段,第二个参数是一个可变参数,用于传递多个值。在这个例子中,我们将年龄字段作为第一个参数,然后传递了三个值:18、20和22。这样就可以查询到所有年龄为这三个值的用户了。
另外,如果您需要查询的条件比较复杂,可以考虑使用Mybatis-Plus的QueryWrapper类或者自定义SQL语句来实现。
MyBatis Plus 中 ESCAPE
MyBatis Plus 中的 `ESCAPE` 是用于在进行模糊查询时,指定转义字符的关键字。
在进行模糊查询时,`_` 表示任意单个字符,`%` 表示任意多个字符。但是,有时候我们需要查询包含 `_` 或 `%` 的实际字符,而不是通配符。这时就需要指定转义字符。
在 MyBatis Plus 中,可以使用 `QueryWrapper` 的 `like` 方法进行模糊查询,并通过 `escape` 方法指定转义字符。例如,如果要查询包含下划线的字符串,可以这样写:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "%\\_%").escape('\\');
List<User> userList = userMapper.selectList(wrapper);
```
其中,`escape` 方法指定了转义字符为反斜杠 (`\`)。这样,查询语句就会将 `_` 视为普通字符,而不是通配符。
如果不指定转义字符,MyBatis Plus 会默认使用反斜杠 (`\`) 作为转义字符。如果查询语句中本身存在反斜杠,需要将其转义为两个反斜杠 (`\\`)。例如,如果要查询包含反斜杠的字符串,可以这样写:
```
wrapper.like("name", "%\\\\%").escape('\\');
```
其中,`\\\\` 表示转义后的反斜杠,`%` 表示任意字符。
需要注意的是,在使用转义字符进行查询时,需要注意转义字符的数量和位置,否则可能会导致查询结果不正确。
阅读全文