mybatis之动态sql——if、where、foreach、choose、set

目的

简化sql语句的拼串操作。

if语句
    <select id="findAllEmp"  resultType="com.xzy.bean.EmpInfo">
        select * from  emp where
        /*test="" 编写判断条件,
        id!=null :取出Javabean属性当中的id值,判断是否为空
        */
        <if test="id!=null">
            id > #{id} and
        </if>
        /*判断属性是否为空*/
        <if test="name!=null">
            name like #{name} and
        </if>
    </select>

注意:
使用if语句进行拼串最后一个条件如果不满足,会有多的and,这时sql语句是不正确的。
xml当中还要注意特殊字符的转义。

where标签
    <select id="findAllEmp"  resultType="com.xzy.bean.EmpInfo">
        select * from  emp
        /*where标签可以帮我们自动去除掉前面的and*/
        <where>
            /*test="" 编写判断条件,
            id!=null :取出Javabean属性当中的id值,判断是否为空
            */
            <if test="id!=null">
                id > #{id}
            </if>
            /*判断属性是否为空*/
            <if test="name!=null">
                and  name like #{name}
            </if>
        </where>

    </select>

where 标签可以帮我们自动去除掉条件满足后的sql前面多余的and。

trim 截取字符串

prefix="" :为下面的sql整体添加一个前缀
prefixOverrides="" :去除sql语句中前面多余的字符
suffix="" :为整体添加一个后缀
suffixOverrides="" :可以去掉后面多余的字符

    <select id="findAllEmp" resultType="com.xzy.bean.EmpInfo">
        select * from emp
        /*trim:截取字符串
        prefix=""           :为下面的sql整体添加一个前缀
        prefixOverrides=""  :去除sql语句中前面多余的字符
        suffix=""           :为整体添加一个后缀
        suffixOverrides=""  :可以去掉后面多余的字符
        */
        <trim prefix="where" prefixOverrides="and" suffixOverrides="and">
            /*test="" 编写判断条件,
            id!=null :取出Javabean属性当中的id值,判断是否为空
            */
            <if test="id!=null">
                id > #{id}
            </if>
            /*判断属性是否为空*/
            <if test="name!=null">
                and name like #{name}
            </if>
        </trim>
 </select>
foreach 遍历集合
    <select id="findAllEmp" resultType="com.xzy.bean.EmpInfo">
        select * from emp where id in
        /*
        collection="" :指定要遍历的集合
        close="" :以什么结束
        open="" :以什么结束
        index="" :如果遍历的是list,index保存当前遍历元素的索引
        如果是map,index保存到就是key
        item="" :遍历取出的元素,如果是map,取出的就是value
        separator="" 以什么分割
        */
        <foreach collection="list" close=")" index="" item="id_item" open="(" separator=",">
            #{id_item}
        </foreach>
    </select>
choose标签
    <select id="findAllEmp" resultType="com.xzy.bean.EmpInfo">
        select * from emp
        <where>
            /*
            满足一个条件之后就直接拼接sql语句,相当于分支选择
            */
            <choose>
                <when test=""></when>
                <when test=""></when>
                <when test=""></when>
                <otherwise></otherwise>
            </choose>
        </where>
    </select>
set标签 动态更新

会自动去掉多余的逗号,主要用于动态更新。

    <update id="updateEmp">
        UPDATE emp SET
        <set>
            <if test="id!=null" >
                    id=#{id},
            </if>
            <if test="name!=null" >
                name=#{name},
            </if>
            <if test="age!=null" >
                age=#{age},
            </if>
        </set>
    </update>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值