SQL dinámico
- Las sentencias de SQL que cambian con la entrada del usuario o los cambios en las condiciones externas se denominan sentencias de SQL dinámicas.
-
select * from emp where name like concat('%', #{name}, '%') and gender = #{gender} and entrydate between #{begin} and #{end} order by update_time desc;
-
En la declaración SQL anterior, solo después de que se establezcan las tres condiciones de nombre, género y fecha de entrada , se puede realizar la consulta correcta, pero si desea realizar la consulta de una determinada condición solo, necesita usar un SQL dinámico declaración
si etiqueta
- <si>: se utiliza para determinar si la condición es verdadera. Use el atributo de prueba para el juicio condicional, si la condición es verdadera, empalme SQL
- La instrucción SQL modificada es
-
select * from emp where <if test="name!=null"> name like concat('%', #{name}, '%') </if> <if test="gender!=null"> and gender = #{gender} </if> <if test="begin!=null and end!=null"> and entrydate between #{begin} and #{end} </if> order by update_time desc;
-
-
Ejecute el siguiente método
-
public void TestList() { List<Emp> list = empMapper.List("张", null, null, null); System.out.println(list); }
-
Pase solo el atributo de nombre
-
-
El resultado de la operación es el siguiente
-
Consulta la información de todos los empleados de apellido Zhang
-
hay un problema
- Cuando el nombre en la condición de consulta es nulo, se informará un error de sintaxis de la siguiente manera:
- Contiene la palabra clave y después de donde, se produce un error de sintaxis
- problema resuelto
- Agregue la etiqueta <where> a la instrucción SQL en el archivo de mapeo XML
- El código específico es el siguiente:
-
select * from emp <where> <if test="name!=null"> name like concat('%', #{name}, '%') </if> <if test="gender!=null"> and gender = #{gender} </if> <if test="begin!=null and end!=null"> and entrydate between #{begin} and #{end} </if> </where> order by update_time desc;
-
El resultado de la operación es el siguiente:
resumen
- Etiqueta <if>: se utiliza para determinar si la condición es verdadera. Use el atributo de prueba para el juicio condicional, si la condición es verdadera, empalme la declaración SQL
- Etiqueta <where>: el elemento where solo insertará la cláusula where cuando el elemento secundario tenga contenido, y eliminará automáticamente el y o o al principio de la cláusula