1.将公用的内容提取出来,使用sql标签提取,然后使用include引用
<resultMap type="mptest.mybatistest.entity.GoodVo" id="userMap" >
<result column="id" property="id" />
<result column="name" property="name" />
<collection property="orderList" ofType="mptest.mybatistest.entity.Order">
<result column="orderId" property="orderId" />
<result column="orderFee" property="orderFee" />
</collection>
</resultMap>
<sql id="field" >
u.id,
u.name
</sql>
<select id="getGoodsList" resultMap="userMap" >
select
<include refid="field"></include> ,
o.orderId,
o.orderFee
FROM
user_test u left join order_id_test o on u.id=o.id
where u.id = 1
</select>
2.表在使用的时候可能起别名,有别名的情况:
<resultMap type="mptest.mybatistest.entity.GoodVo" id="userMap" >
<result column="id" property="id" />
<result column="name" property="name" />
<collection property="orderList" ofType="mptest.mybatistest.entity.Order">
<result column="orderId" property="orderId" />
<result column="orderFee" property="orderFee" />
</collection>
</resultMap>
<sql id="field" >
u.id,
u.name
</sql>
<sql id="field1" >
${alias}.orderId,
${alias}.orderFee
</sql>
<select id="getGoodsList" resultMap="userMap" >
select
<include refid="field"></include>,
<include refid="field1">
<property name="alias" value="o"/>
</include>
FROM
user_test u left join order_id_test o on u.id=o.id
where u.id = 1
</select>
1)sql和include配合使用,sql标签里和其他增删改查标签一样支持动态sql标签
2)include标签可以通过property子标签给sql标签里传值,sql标签里用 ${} 获取