Mybatis 如何返回LIst<T> 里面套List对象
时间: 2024-11-22 16:39:09 浏览: 0
在MyBatis中,当你需要从数据库查询结果集转化为一个包含嵌套List的对象结构时,可以利用 resultMap 或者 typeHandler 来实现。假设你有一个实体类 `Entity` 包含一个 List 子属性,如 `List<SubEntity>`,你可以通过以下步骤操作:
1. **创建ResultMap**: 在`mybatis-config.xml` 或 mapper XML文件中,定义一个 ResultMap 专门用于这种嵌套的返回类型,例如:
```xml
<resultMap id="entityResultMap" type="com.example.Entity">
<id property="id" column="id"/>
<collection property="subEntities" ofType="com.example.SubEntity">
<id property="subId" column="sub_id"/>
<!-- 其他子实体属性映射 -->
</collection>
</resultMap>
```
2. **在Mapper接口中**,使用该 ResultMap 调用 SQL 查询:
```java
List<Entity> list = sqlSession.selectList("select * from table", resultMap = "entityResultMap");
```
3. **利用TypeHandler处理复杂类型**: 如果你有自定义类型或更复杂的嵌套层级,你可能需要创建 TypeHandler 来序列化和反序列化这些数据。
4. **处理数据**: 返回的结果已经是 `List<Entity>` 类型,其中 `Entity.subEntities` 是另一个 List 对象。
阅读全文