MyBatis 如何查询完第一张表接着用第一张表的数据 查询第二张表
在 MyBatis 中,可以使用嵌套查询(Nested Queries)来查询第一张表的数据,并将其作为条件来查询第二张表。
首先,需要定义两个实体类(Entity)来表示两张表的数据,假设第一张表为 Table1,第二张表为 Table2,并且 Table1 中有一个字段 table2Id 与 Table2 的主键关联。
然后,在 MyBatis 的映射文件中,可以使用 <select> 标签来定义查询语句。首先查询第一张表的数据,在查询结果中获取 table2Id,然后使用 <foreach> 标签将这些 table2Id 作为参数传递给第二个查询语句,查询第二张表的数据。
示例代码如下:
<!-- 定义查询第一张表的语句 -->
<select id="selectTable1" resultType="Table1">
SELECT * FROM table1
</select>
<!-- 定义查询第二张表的语句 -->
<select id="selectTable2ByTable1Ids" resultType="Table2">
SELECT * FROM table2
WHERE table2Id IN
<foreach item="id" collection="table1Ids" open="(" separator="," close=")">
#{id}
</foreach>
</select>
然后,在 Java 代码中,调用 MyBatis 的 selectList() 方法来执行查询操作,并将第一张表的结果作为参数传递给第二个查询语句。
示例代码如下:
List<Table1> table1List = sqlSession.selectList("selectTable1");
List<Integer> table1Ids = table1List.stream().map(Table1::getTable2Id).collect(Collectors.toList());
List<Table2> table2List = sqlSession.selectList("selectTable2ByTable1Ids", table1Ids);
这样就可以通过第一张表的数据查询第二张表的数据了。
原文地址: https://www.cveoy.top/t/topic/i5rB 著作权归作者所有。请勿转载和采集!