級(jí)聯(lián)關(guān)系實(shí)現(xiàn)的方式
一對(duì)一
一對(duì)多
案例實(shí)操
一對(duì)一關(guān)系
實(shí)現(xiàn)方式 resultType/resultMap
接口方法
- 一對(duì)一關(guān)聯(lián)查詢 resultType
? - @param userId
? - @return
?
UserDto queryUserCardInfoForResultType(@Param("userId")int userId);
sql 查詢
<select id="queryUserCardInfoForResultType" resultType="userDto">
SELECT
u.id,
u.user_name AS userName,
u.user_pwd AS userPwd,
u.flag,
u.cid,
c.number
FROM
USER u
LEFT JOIN card c ON u.cid = c.id
WHERE
u.id = #{userId}
</select>
resultType 實(shí)現(xiàn)
<select id="queryUserByIdResultType" parameterType="int" resultType="com.xxx.dto.UserDto">
SELECT
u.id,
u.user_name AS userName,
u.create_time,
u.flag,
u.cid AS cid,
c.number
FROM
User u
LEFT JOIN card c u ON u.cid =c.id
WHERE
u.id = #{id}
</select>
resultMap 實(shí)現(xiàn)
<resultMap id="baseUser" type="com.xxx.mybatis.pojo.User">
<id column="id" property="id" />
<result column="user_name" property="userName" />
<result column="true_name" property="trueName" />
<result column="role_name" property="roleName"/>
</resultMap>
<select id="queryUserInfoByIdV2" parameterType="int" resultMap="baseUser" >
SELECT u.id,u.user_name,u.true_name,l.role_name
FROM t_user u JOIN t_user_role r
ON (u.id = r.user_id) JOIN t_role l
on (r.role_id = l.id)
WHERE u.id = #{id}
</select>
resultMap + association實(shí)現(xiàn)
resultMap 映射定義
<resultMap id="baseUserRole" type="userRole">
<id column="id" property="id"></id>
<result column="role_id" property="roleId"></result>
<association property="role" column="role_id" select="queryRoleById"/>
</resultMap>
?
<resultMap id="baseRole" type="role">
<id column="id" property="id"></id>
<result column="role_name" property="roleName"/>
<result column="role_remark" property="roleRemark"/>
</resultMap>
查詢
<select id="queryUserRoleInfoById" parameterType="int" resultMap="baseUserRole">
SELECT id, role_id FROM t_user_role WHERE id = #{id}
</select>
?
<select id="queryRoleById" parameterType="int" resultMap="baseRole">
SELECT id, role_name , role_remark FROM t_role WHERE id = #{role_id}
</select>
一對(duì)多關(guān)系
實(shí)現(xiàn)方式:resultMap 實(shí)現(xiàn)
resultType 有局限撮竿,無(wú)法去重贾铝,需手動(dòng)處理邓了。
ResultMap 定義
<resultMap id="baseGoods" type="goods">
<id column="id" property="id"/>
<result column="name" property="goodsName"/>
<result column="promotePrice" property="price"/>
<collection property="ixxxs" column="id" select="queryGoodsIxxxsById"/>
</resultMap>
?
<resultMap id="baseGoodsImnage" type="GoodsIxxxs">
<id column="id" property="id"></id>
<result column="goods_skuid" property="goodsSkuid" ></result>
<result column="goods_img" property="ixxxUrl" ></result>
</resultMap>
查詢
<select id="queryGoodsById" parameterType="int" resultMap="baseGoods" useCache="true">
select id, name , promotePrice FROM yg_goods WHERE id = #{id}
</select>
?
<select id="queryGoodsIxxxsById" parameterType="int" resultMap="baseGoodsImnage" useCache="true">
SELECT id , goods_skuid , goods_img FROM yg_goods_imgage where goods_skuid = #{id}
</select>
擴(kuò)展
sql
sql 元素用來(lái)定義一個(gè)可以復(fù)用的 SQL 語(yǔ)句段索守,供其它語(yǔ)句調(diào)用。比如:
<sql id="User_columns">userId, userName, password</sql>
<select id="findUserById" resultMap="RM_User" >
select <include refid="User_columns"/>
from user where userId = #{userId}
</select>
如想走進(jìn)Java,學(xué)習(xí)Java的話睹栖,你可以找小樂硫惕,小樂有一大批java學(xué)習(xí)視頻和資料可分享哦。如想走進(jìn)Java野来,學(xué)習(xí)Java的話恼除,你可以找小樂,小樂有一大批java學(xué)習(xí)視頻和資料可分享哦曼氛。添加【lezijie006】備注: 67 豁辉,不加備注不會(huì)通過哦!Rɑ肌徽级!