溫馨提示×

mybatis一對多和多對一怎么配置

小億
192
2024-01-26 14:50:15
欄目: 編程語言

MyBatis的一對多和多對一關系的配置需要使用兩個標簽:<collection><association>。

一對多關系的配置步驟如下:

  1. 創建兩個實體類,一個代表一的一方,一個代表多的一方。
  2. 在一的一方的實體類中添加一個集合屬性,用于存儲多的一方的實體對象。
  3. 在Mapper.xml文件中,使用<collection>標簽配置一對多關系。在<collection>標簽中,指定property屬性為一的一方的集合屬性,ofType屬性為多的一方的實體類,select屬性為查詢多的一方數據的SQL語句。
  4. 在查詢一的一方數據的SQL語句中,使用<collection>標簽的select屬性的值作為子查詢,并將查詢結果映射到一的一方的集合屬性中。

多對一關系的配置步驟如下:

  1. 創建兩個實體類,一個代表多的一方,一個代表一的一方。
  2. 在多的一方的實體類中添加一個實體對象屬性,用于存儲一的一方的實體對象。
  3. 在Mapper.xml文件中,使用<association>標簽配置多對一關系。在<association>標簽中,指定property屬性為多的一方的實體對象屬性,javaType屬性為一的一方的實體類,column屬性為多的一方的外鍵列名。
  4. 在查詢多的一方數據的SQL語句中,使用<association>標簽的select屬性的值作為子查詢,并將查詢結果映射到多的一方的實體對象屬性中。

配置示例:

一對多關系配置示例:

<resultMap id="userMap" type="User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <collection property="orders" ofType="Order" select="getOrdersByUserId" column="id"/>
</resultMap>

<select id="getUserById" parameterType="int" resultMap="userMap">
  SELECT * FROM user WHERE id = #{id}
</select>

<select id="getOrdersByUserId" parameterType="int" resultMap="orderMap">
  SELECT * FROM orders WHERE user_id = #{userId}
</select>

多對一關系配置示例:

<resultMap id="orderMap" type="Order">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <association property="user" javaType="User" column="user_id" select="getUserById"/>
</resultMap>

<select id="getOrderById" parameterType="int" resultMap="orderMap">
  SELECT * FROM orders WHERE id = #{id}
</select>

<select id="getUserById" parameterType="int" resultMap="userMap">
  SELECT * FROM user WHERE id = #{id}
</select>

這些示例假設存在兩個表:userorders,其中orders表中的外鍵列為user_id。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女