08Mybatis:动态sql

08动态sql

1.IF WHERE标签的使用

 <select id="findByTitleAndDistrict02" parameterType="com.freshtest.mybatis.model.House" resultMap="ReturnMap">
        SELECT* FROM house
        <where>
            <if test="house.title!='' and house.title!=null">
                AND title LIKE CONCAT('%',#{house.title},'%')
            </if>
            <if test="house.district!='' and house.district!=null">
                AND district LIKE CONCAT('%',#{house.district},'%')
            </if>
        </where>
--         WHERE title LIKE CONCAT('%',#{title},'%')
--         AND district LIKE CONCAT('%',#{district},'%')
    </select>

2. SQL片段

提高代码复用性

 <select id="findByTitleAndDistrict02" parameterType="com.freshtest.mybatis.model.House"
            resultMap="ReturnMap">
        SELECT* FROM house
        <where>
            <include refid="WhereSql"></include>
        </where>
--         WHERE title LIKE CONCAT('%',#{title},'%')
--         AND district LIKE CONCAT('%',#{district},'%')
    </select>
    <sql id="WhereSql">
        <if test="house.title!='' and house.title!=null">
            AND title LIKE CONCAT('%',#{house.title},'%')
        </if>
        <if test="house.district!='' and house.district!=null">
            AND district LIKE CONCAT('%',#{house.district},'%')
        </if>
    </sql>

Foreach标签

IN操作

<select id="getByIds" parameterType="java.util.List" resultMap="ReturnMap">
    <!--
        使用foreach遍历传入ids
            collection:指定输入对象中集合属性
            item:每次遍历生成对象
            open:开始遍历时拼接的串
            close:结束遍历时拼接的串
            separator分隔符:遍历两个对象中需要拼接的串
            实现and id IN(1,10,16)拼接
            and id IN(#{item_id},#{item_id},#{item_id})
    -->
        SELECT * FROM house
        <where>
            <foreach collection="ids"
                     item="item_id"
                     open="and id IN("
                     separator=","
                     close=")"> #{item_id}
             </foreach>
        </where>
</select>

OR操作

<select id="getByIds" parameterType="java.util.List" resultMap="ReturnMap">
            SELECT * FROM house
            <where>
                <foreach
                    collection="ids"
                    item="item_id"
                    open="and"
                    separator=" or "
                    close=""
                >
                    id=#{item_id}
                </foreach>
            </where>
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值