一、resultmap中的一對一,一對多的使用
(1)resultmap的使用方法
<resultMap id="同意mapper檔案唯一的辨別" type="映射的pojo對象">
<id column="表的主鍵字段對應别名" jdbcType="字段類型" property="映射pojo對象的主鍵屬性" />
<result column="表的一個字段的别名" jdbcType="字段類型" property="映射到pojo對象的對應屬性"/>
<!-- 一對一,代表這個對象裡面的pojo對象-->
<association property="pojo的一個對象屬性" javaType="pojo關聯的pojo對象">
<id column="關聯pojo對象對應表的主鍵字段" jdbcType="字段類型" property="關聯pojo對象的主席屬性"/>
<result column="任意表的字段" jdbcType="字段類型" property="關聯pojo對象的屬性"/>
</association>
<!-- 一對多,代表這個對象裡面的集合pojo對象-->
<collection property="pojo的集合屬性" ofType="集合中的pojo對象">
<id column="集合中pojo對象對應的表的主鍵字段" jdbcType="字段類型" property="集合中pojo對象的主鍵屬性" />
<result column="可以為任意表的字段" jdbcType="字段類型" property="集合中的pojo對象的屬性" />
</collection>
</resultMap>
(2)resultmap的使用樣例
<resultMap id="orderMap" type="com.yin.databaseproject.vo.OrderVO">
<id column="orderId" property="orderId" />
<result column="numId" jdbcType="VARCHAR" property="numId"/>
<!-- 一對一,代表這個對象裡面的pojo對象-->
<association property="user" javaType="com.yin.databaseproject.vo.UserVO">
<id column="userId" jdbcType="VARCHAR" property="id"/>
<result column="username" jdbcType="VARCHAR" property="username"/>
</association>
<!-- 一對多,變成list<String> -->
<collection property="orderDetailId" ofType="string">
<constructor>
<arg column="orderDetail"/>
</constructor>
</collection>
<!-- 一對多,變成list<Object> -->
<collection property="orderDetail" ofType="com.yin.databaseproject.vo.OrderDetail">
<id column="orderDetail" jdbcType="VARCHAR" property="id" />
<result column="itemId" jdbcType="VARCHAR" property="itemId" />
</collection>
</resultMap>
<select id="findOrdersa" resultMap="orderMap">
SELECT
o.id as orderId,
user_id as userId,
u.username as username,
number as numId,
od.id AS orderDetail ,
od.items_id as itemId
FROM
orders o
LEFT JOIN orderdetail od ON o.id = od.orders_id
left join user u on o.user_id=u.id
</select>
3、vo類
@Data
public class OrderVO {
private String orderId;
private String numId;
private UserVO user;
private List<String> orderDetailId;
private List<OrderDetail> orderDetail;
}
@Data
public class UserVO {
private String id;
private String username;
private String password;
private String phone;
}
@Data
public class OrderDetail {
private String id;
private String itemId;
}