一对多
Java数据结构
一的一方实体类中含有多的一方list,例如,SysDictType与SysDictData,一对多,则,SysDictData有属性 sysDictDataList
xml配置
<!-- 映射转换集合 -->
<resultMap id="SysDictTypeAllMap" type="SysDictType">
<id column="dtid" property="id"></id>
<result column="type_name" property="typeName"></result>
<result column="dt_type_code" property="typeCode"></result>
<result column="enable" property="enable"></result>
<collection property="sysDictDataList" ofType="SysDictData">
<id property="dataId" column="ddid"></id>
<result property="dataLabel" column="data_label"></result>
<result property="dataValue" column="data_value"></result>
<result property="typeCode" column="dd_type_code"></result>
<result property="isDefault" column="is_default"></result>
<result property="remark" column="sort"></result>
</collection>
</resultMap>
<!-- 查询数据字典列表 All -->
<select id="selectAll" resultMap = "SysDictTypeAllMap">
SELECT dt.id dtid,dt.type_name,dt.type_code dt_type_code,dt.enable,
dd.data_id ddid,dd.data_label,dd.data_value,dd.type_code dd_type_code, dd.is_default,dd.sort
FROM sys_dict_type dt
left join sys_dict_data dd on dt.type_code=dd.type_code
where dt.enable=1
</select>
多对一
Java数据结构
一的一方实体类中含有多的一方对象属性,例如,Account与Salon,多对一,则,Account有属性 Salon
xml配置
<resultMap type="Account" id="accountSalonResult">
<!-- 在一对一或一对多查询中,resultMap的自动设值容易失效,所以最好手动设值 -->
<id property="aid" column="aid"></id>
<result property="cid" column="cid" />
<result property="sid" column="asid" />
<result property="cardId" column="card_id" />
<result property="balance" column="balance" />
<result property="number" column="number" />
<result property="status" column="status" />
<!-- 一对一 javaType表示存储类型 一定要写否则报错-->
<association property="salon" javaType="top.jiug.sa.model.Salon">
<id property="sid" column="ssid" />
<result property="sAccount" column="s_account" />
<result property="sName" column="s_name" />
<result property="sLoc" column="s_loc" />
<result property="sLogo" column="s_logo" />
<result property="sDeac" column="s_deac" />
<result property="sType" column="s_type" />
<result property="industry" column="industry" />
</association>
</resultMap>
<select id="selectAccountByCId" parameterType="Integer" resultMap="accountSalonResult">
select a.aid, a.cid, a.sid asid, a.card_id, a.balance, a.number, a.status
, s.sid ssid,s.s_account, s.s_name, s.s_loc, s.s_logo, s.s_deac, s.s_type, s.industry
from sa_account a
left join sa_salon s on a.sid=s.sid
where cid=#{cid}
</select>
PS
一对一
一对一只是多对一的一种特殊情况,按照多对一处理即可
遇到两张表有相同列名情况
表,起别名
列,起别名(例如:s.id as sid,c.id as cid,在resultMap的column中使用 sid cid)