Mybatis Plus 返回多个Map
时间: 2024-01-11 09:53:44 浏览: 32
Mybatis Plus 可以通过 `List<Map<String, Object>>` 的方式返回多个Map。具体实现方式如下:
```java
List<Map<String, Object>> result = new ArrayList<>();
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1);
List<User> userList = userMapper.selectList(wrapper);
for (User user : userList) {
Map<String, Object> map = new HashMap<>();
map.put("id", user.getId());
map.put("name", user.getName());
map.put("age", user.getAge());
result.add(map);
}
return result;
```
以上示例中,先使用 `QueryWrapper` 查询出符合条件的 `User` 列表,然后遍历列表,将每个 `User` 对象的属性放入一个 `Map` 中,最后将这个 `Map` 添加到 `result` 列表中,最终返回的就是多个 `Map` 的列表。
相关问题
Mybatis Plus 返回多个结果集
Mybatis Plus 默认是不支持返回多个结果集的,但是可以通过使用存储过程或者使用Mapper.xml的多行结果集功能来实现返回多个结果集。
1. 使用存储过程
在存储过程中,可以通过多次使用select语句来返回多个结果集,然后在Mapper.xml中调用存储过程即可获取多个结果集。
示例代码:
```sql
-- 存储过程
CREATE PROCEDURE get_multiple_result_sets
AS
BEGIN
SELECT * FROM table1;
SELECT * FROM table2;
END
```
```xml
<!-- Mapper.xml -->
<select id="getMultipleResultSets" statementType="CALLABLE" resultSets="result1,result2">
{call get_multiple_result_sets()}
</select>
```
在上面的示例中,使用了resultSets属性来指定返回的结果集名称,然后可以通过resultType来指定结果集的类型。
2. 使用Mapper.xml的多行结果集功能
在Mapper.xml中,可以通过使用select元素的resultMap属性来指定返回多个结果集,然后在resultMap中使用resultSet元素来指定每个结果集的映射关系。
示例代码:
```xml
<!-- Mapper.xml -->
<select id="getMultipleResultSets" resultMap="multiResultSet">
SELECT * FROM table1;
SELECT * FROM table2;
</select>
<resultMap id="multiResultSet" type="java.util.HashMap">
<resultSet id="result1" type="com.example.Table1">
<result property="id" column="id"/>
<result property="name" column="name"/>
</resultSet>
<resultSet id="result2" type="com.example.Table2">
<result property="id" column="id"/>
<result property="value" column="value"/>
</resultSet>
</resultMap>
```
在上面的示例中,使用了resultMap属性来指定返回结果的映射关系,然后在resultMap中使用resultSet元素来指定每个结果集的映射关系。在Java代码中,可以通过List<Map<String,Object>>来获取多个结果集。
mybatis-plus 返回多个map 再转Map
可以使用Java8的Stream API将多个Map合并成一个Map。具体代码如下:
```
List<Map<String, Object>> list = mapper.selectMaps(wrapper);
Map<String, Object> result = list.stream().flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
其中,`mapper`是Mybatis-plus的Mapper对象,`wrapper`是查询条件对象,`selectMaps`方法返回多个Map。`flatMap`方法用于将多个Map合并成一个Stream,`toMap`方法用于将Stream转换成一个Map。最终得到的`result`就是合并后的Map。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)