Sql dinámico de mybatis: si, dónde, foreach, elegir, establecer

Objetivo

Simplifique la operación de cadenas de sentencias sql.

si declaración

    <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>

Nota:
si no se cumple la última condición mediante el uso de la declaración if, habrá muchos y. En este momento, la declaración sql es incorrecta.
También preste atención al escape de caracteres especiales en xml.

etiqueta donde

    <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>

La etiqueta where puede ayudarnos a eliminar automáticamente lo redundante y delante del SQL después de que se cumpla la condición.

trim intercepta una cadena

prefix="": agregue un prefijo al siguiente sql como un todo
prefixOverrides="": elimine los caracteres adicionales delante de la instrucción sql
suffix="": agregue un sufijo a todo el
suffixOverrides="": puede eliminar el caracteres adicionales detrás

    <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 atraviesa la colección

    <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>

elegir etiqueta

    <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>

establecer actualización dinámica de etiquetas

Eliminará automáticamente las comas adicionales, principalmente para actualizaciones dinámicas.

    <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>

Supongo que te gusta

Origin blog.csdn.net/weixin_42643321/article/details/107825639
Recomendado
Clasificación