一对一关联
假如对于如下查询语句 select * from orders LEFT JOIN user on orders.user_id = user.user_id
,orders
左连接user
时,一个订单只可能连接一个user
,简称一对一。用来接收返回值的pojo
类有如下两种做法:
- 再创建一个类,包含如下我们需要的信息。
- 在
orders
中加入一个User
属性。
第一种需要新建一个类,不是很好的做法,所以下面讲解第二种如何实现。
<resultMap type="Orders" id="oto">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<association property="user" javaType="User">
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
</association>
</resultMap>
<select id="oneToOne" resultMap="oto">
select * from orders LEFT JOIN `user` on orders.user_id = `user`.user_id
</select>
一对多关联
sql
语句:select * from user LEFT JOIN orders on orders.user_id = user.user_id
。user
左连接orders
时,一个user
可能存在多个orders
。在User
类里加上一个属性List<Orders>
<resultMap type="User" id="otm">
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="birthday" property="birthday"/>
<result column="address" property="address"/>
<collection property="list" ofType="Orders">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
</collection>
</resultMap>
<select id="oneToMore" resultMap="otm">
select * from `user` LEFT JOIN orders on orders.user_id = `user`.user_id
</select>