mybatisplus纵表转换成横表
时间: 2024-08-13 10:04:11 浏览: 40
SpringBoot + MybatisPlus 实现实体类转成数据库表结构,可直接运行
MyBatisPlus是一个基于MyBatis的ORM(对象关系映射)框架增强工具,它提供了一些方便的功能来简化数据库操作。其中,将纵表数据(即一列对应一条记录,类似于一对一或多对一的关系)转换成横表(即一列对应多个记录,类似于一对多或多对多的关系),通常涉及到分组查询和结果集的扁平化。
在MyBatisPlus中,你可以通过动态SQL、结果映射配置(ResultMap)、甚至是自定义Mapper方法来实现这个功能。例如,你可以创建一个动态SQL语句,使用GROUP BY和AS关键字,将需要的字段聚合到一个新的列中。然后在结果处理阶段,通过Java代码遍历结果集,将每个条目对应的值添加到新的关联对象列表中。
这里有一个简单的例子:
```java
List<Map<String, Object>> result = sqlSession.selectList("SELECT id, name, COUNT(*) as count FROM table GROUP BY id");
for (Map<String, Object> map : result) {
map.put("subItems", new ArrayList<>());
List<Map<String, Object>> subItems = sqlSession.selectList("SELECT * FROM sub_table WHERE parent_id = ?",
((Long)map.get("id")).longValue());
map.get("subItems").addAll(subItems);
}
```
在这个示例中,首先获取了主表的分组查询结果,然后针对每个主表的ID,再执行一次子表的查询,并将子表的数据添加到主表对应行的"subItems"列表中。
阅读全文