随笔 mybaits 提取公用的sql内容

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标签里用 ${} 获取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章