MyBatis中的嵌套查詢?cè)趺淳帉?xiě)

小億
223
2024-04-23 15:03:44

在 MyBatis 中編寫(xiě)嵌套查詢可以通過(guò)使用<collection><association>標(biāo)簽來(lái)實(shí)現(xiàn)。下面是一個(gè)示例:

假設(shè)有兩個(gè)表,一個(gè)是用戶表(user),一個(gè)是訂單表(order),用戶表和訂單表是一對(duì)多的關(guān)系,一個(gè)用戶可以有多個(gè)訂單。

  1. 在 UserMapper.xml 文件中編寫(xiě)查詢用戶的 SQL:
<select id="getUserById" resultType="User" parameterType="int">
    SELECT * FROM user WHERE id = #{id}
</select>
  1. 在 OrderMapper.xml 文件中編寫(xiě)查詢訂單的 SQL,并使用<collection>標(biāo)簽來(lái)嵌套查詢用戶信息:
<select id="getOrderByUserId" resultType="Order" parameterType="int">
    SELECT * FROM order WHERE user_id = #{userId}
</select>
<select id="getOrdersByUserId" resultType="User" parameterType="int">
    SELECT * FROM user WHERE id = #{id}
    <collection property="orders" ofType="Order" select="getOrderByUserId"/>
</select>

在這個(gè)示例中,getOrdersByUserId方法將會(huì)先查詢用戶信息,然后再查詢?cè)撚脩舻挠唵涡畔?,并將訂單信息嵌套到用戶?duì)象中的orders屬性中。通過(guò)這種方式可以實(shí)現(xiàn)嵌套查詢的效果。

0