mybatis plus主表查明细
时间: 2023-08-30 22:08:49 浏览: 171
在使用Mybatis Plus进行主表查明细的操作时,可以使用Mybatis Plus提供的关联查询功能来实现。首先,需要在主表的实体类中定义与明细表实体类的关联关系。可以通过注解或者XML方式定义关联关系。接下来,在查询主表数据时,使用关联查询功能同时查询明细表的数据。
示例代码如下所示:
```java
// 主表实体类
public class MainTable {
// 主表字段
// ...
// 明细表关联对象
@TableField(exist = false)
private DetailTable detailTable;
// getter和setter方法
// ...
}
// 明细表实体类
public class DetailTable {
// 明细表字段
// ...
}
// Mybatis Plus查询主表并关联查询明细表
public List<MainTable> queryMainTableWithDetail() {
QueryWrapper<MainTable> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("条件字段", "条件值");
List<MainTable> mainTableList = mainTableMapper.selectList(queryWrapper);
// 关联查询明细表
if (mainTableList != null && !mainTableList.isEmpty()) {
List<Long> detailTableIds = mainTableList.stream()
.map(MainTable::getDetailTableId)
.collect(Collectors.toList());
QueryWrapper<DetailTable> detailQueryWrapper = new QueryWrapper<>();
detailQueryWrapper.in("id", detailTableIds);
List<DetailTable> detailTableList = detailTableMapper.selectList(detailQueryWrapper);
// 将明细表数据与主表数据进行关联
Map<Long, DetailTable> detailTableMap = detailTableList.stream()
.collect(Collectors.toMap(DetailTable::getId, Function.identity()));
for (MainTable mainTable : mainTableList) {
DetailTable detailTable = detailTableMap.get(mainTable.getDetailTableId());
mainTable.setDetailTable(detailTable);
}
}
return mainTableList;
}
```
以上代码通过使用Mybatis Plus提供的查询包装器(QueryWrapper)来构造查询条件,然后使用关联查询功能查询主表数据,并通过关联表的ID字段进行关联查询明细表数据。最后,将查询到的明细表数据与主表数据进行关联,返回关联后的结果。
请注意,具体的表名、字段名以及Mapper接口的命名需要根据实际情况进行修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [如何使用自定义Mybatis-TypeHandler直接将查询到的JSON数据封装到指定对象,达到可复用?](https://blog.csdn.net/qq_38338409/article/details/124227723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [探索Mybatis中Mapper默认返回值](https://blog.csdn.net/zhuqiuhui/article/details/87899146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文