使用场景:处理property不是普通类型
association
两种用法
一 有额外sql 查询的sql没有连表查询 关键select属性
<!--property:属性 column:额外sql的参数
select:额外sql的位置(dao或mapper接口的位置)的select的id-->
<association property="yljgouModel" column="institution_id"
select="com.wonders.dao.IYljgouDao.selectById">
</association>
完整代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wonders.dao.IZyzdDao">
<resultMap id="BaseResultMap" type="com.wonders.model.ZyzdModel">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="gender" property="gender" />
<result column="poisoning_date" property="poisoningDate" />
<result column="type" property="type" />
<!--额外sql-->
<association property="yljgouModel" column="institution_id"
select="com.wonders.dao.IZyzdDao.get">
</association>
</resultMap>
<resultMap id="YljgouModelMap" type="com.wonders.model.YljgouModel">
<result column="id" property="id" />
<result column="institution_code" property="institutionCode" />
<result column="institution_name" property="institutionName" />
</resultMap>
<select id="getResultList" resultMap="BaseResultMap">
select * from TB_XT_ZYZD_INFO
<if test="keyWord!=null">
where name like '%'||#{keyWord}||'%'
</if>
</select>
<!--额外sql-->
<select id="get" resultMap="YljgouModelMap">
select *
from TB_XT_YLJG
where id = #{institutionId}
</select>
</mapper>
二 无额外sql 查询的sql需要连表查询
<!--javaType:指定封装类型 columnPrefix:下面column的前缀-->
<association property="yljgouModel" javaType="com.wonders.model.YljgouModel" columnPrefix="y_">
<id column="id" property="id" />
<result column="institution_code" property="institutionCode" />
<result column="institution_name" property="institutionName" />
</association>
完整代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wonders.dao.IZyzdDao">
<resultMap id="BaseResultMap" type="com.wonders.model.ZyzdModel">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="gender" property="gender" />
<result column="poisoning_date" property="poisoningDate" />
<result column="type" property="type" />
<association property="yljgouModel" javaType="com.wonders.model.YljgouModel" columnPrefix="y_">
<id column="id" property="id" />
<result column="institution_code" property="institutionCode" />
<result column="institution_name" property="institutionName" />
</association>
</resultMap>
<select id="getResultList" resultMap="BaseResultMap">
select zyzd.*,y.id y_id,y.institution_code y_institution_code,y.institution_name y_institution_name
from TB_XT_ZYZD_INFO zyzd
left join TB_XT_YLJG y
on zyzd.institution_id = y.id
<if test="keyWord!=null">
where name like '%'||#{keyWord}||'%'
</if>
</select>
</mapper>
collection
一 有额外sql 查询的sql没有连表查询 只能这样
同association
[写博客只为记录,如有不对,请各位大佬指正]