Uso básico de la instrucción sql dinámica

 

1. si la declaración

Si empno no está vacío, agregue AND empno = # {empno} después del parámetro WHERE, hay 1 = 1, por lo que incluso si empno es nulo, no habrá ningún error después de WHERE.

Archivo de mapeo

<select id = "getEmpById2" resultType = "emp">  
        SELECT * FROM emp WHERE 1 = 1 
        < if test = "empno! = null"> 
            AND empno = # {empno}
         </ if >    
    </select>

Interfaz EmpMapper

public Emp getEmpById2 (@Param ("empno") Integer empno) lanza IOException;

A veces no queremos aplicar todas las condiciones, pero solo queremos elegir una de varias opciones. Cuando se usa la etiqueta if, siempre que la expresión en la prueba sea verdadera, se ejecutará la condición en la etiqueta if. MyBatis proporciona el elemento de elección. La etiqueta if está relacionada con (y), y elegir está relacionado con o.

2. Donde declaración y Elegir (cuando, de lo contrario)

1. Donde empno y ename son nulos, entonces dónde no aparecerá en la instrucción sql.
2. La etiqueta de elección determina si la condición de prueba en el interno cuando la etiqueta se cumple en orden. Si una de ellas es verdadera, entonces la opción finaliza. Cuando no se cumplen las condiciones de all when in choose, ejecute SQL de lo contrario. Similar a la declaración de cambio de Java, elegir es cambiar, cuando es el caso, de lo contrario es predeterminado.

Archivo de mapeo

<select id = "getEmpById3" resultType = "emp" parameterType = "emp"> 
        SELECT * FROM EMP 
         <where> 
            <choose> 
                <when ​​test = "empno! = null"> 
                    Y empno como # {empno}
                 </when> 
                <when ​​test = "ename! = null"> 
                    AND ename like # {ename}
                 </when> 
                <otherwise> 
                    AND job = "zz" 
                </otherwise> 
            </choose> 
        </where> 
    </select>

Declaración 3.set

Set se usa principalmente para resolver el problema de actualización.
Archivo de mapeo

<update id = "updateEmprById2" parameterType = "emp"> 
        ACTUALIZAR emp
         <set> 
            < if test = "ename! = null"> ename = # {ename}, </ if > 
            < if test = "job! = null" > job = # {job}, </ if > 
        </set> 
        <where> 
            < if test = "empno! = null"> 
                empno = # {empno};
            </ if > 
        </where> 
    </update>

4 recortar

La marca de recorte es una marca formateada que puede completar la función de marca set o where.
Atributos relacionados:
Prefijo: Prefijo.
prefixOverrides: elimina el primer contenido especificado.
sufijo: sufijo
sufijo override: elimina el último contenido especificado.
Archivo de mapeo

<! - 代替 where -> 
    <select id = "getEmpById4" resultType = "emp" parameterType = "emp"> 
        SELECT * FROM emp
         <! - <where> < if test = "username! = Null"> y name = # {username} </ if > </where> -> 
        <trim prefix = "where" prefixOverrides = "AND | OR"> 
            < if test = "empno! = null"> 
                y empno = # {empno}
             </ if > 
            < if test = "ename! = null">
                Y ename = # {ename}
             </ if > 
        </trim>
    </select>

Archivo de mapeo

<! - 代替 set -> 
    <update id = "updateEmprById3" parameterType = "emp"> 
        update emp
         <trim prefix = "set" suffixOverrides = ","> 
            < if test = "ename! = Null"> 
                ename = # {ename},
             </ if > 
            < if test = "job! = null"> 
                job = # {job}
             </ if > 
        </trim> 
        <trim prefix = "where" prefixOverrides = "AND | OR"> 
            < if test = "empno!= nulo "> 
                y empno = # {empno}
            </ if > 
        </trim> 
    </update>

5.declaración previa

Foreach se usa para atravesar, y el objeto atravesado puede ser una matriz o una colección.
Atributos relacionados:
Colección: existen tres valores para el atributo de colección, a saber, lista, matriz y mapa.
Abierto: prefijo.
Cerrar: sufijo
Separador: separador, que indica qué separa cada elemento durante la iteración.
Elemento: representa el alias de cada elemento durante la iteración.
Índice: utilice un nombre de variable para indicar la posición del índice del bucle actual.
Archivo de mapeo

    <insert id = "addEmp6"> 
        inserte en valores emp (ename, job)
         <foreach collection = "emps" item = "emp" separator = ","> 
            (# {emp.ename}, # {emp.job})
         </foreach> 
    </insert>

6.bloque SQL

Archivo de mapeo

<! - Definir contenido SQL repetido-> 
    <sql id = "baseSql"> 
        empno, ename, job
     </ sql> 
    
    <! - Use include para introducir sql block-> 
    <select id = "selEmp1" resultType = "emp"> 
        select
         <include refid = "baseSql" /> 
         from emp
     </ select>

 

Supongo que te gusta

Origin www.cnblogs.com/JonaLin/p/12706411.html
Recomendado
Clasificación