MyBatis es un excelente marco de capa de persistencia que admite consultas SQL simples, procedimientos almacenados y mapeo avanzado. MyBatis elimina la configuración manual de casi todos los códigos y parámetros JDBC y la encapsulación de búsqueda del conjunto de resultados. MyBatis puede usar XML o anotaciones simples para la configuración y mapeo original, mapeo de interfaces y Pojos de Java (objetos Java Old Old) en los registros en la base de datos.
Ahora que mybatis se está volviendo cada vez más popular, todos conocen sus ventajas, por lo que no diré mucho, solo hablará sobre los puntos clave.
MyBatis proporciona funciones dinámicas de SQL. Podemos usar <if> <when> <where> <lo contrario> <benteach> y así sucesivamente, para que podamos escribir SQL dinámico generado de acuerdo con las condiciones. Sin embargo, en el medio, hay un pequeño malentendido de la etiqueta <if> que a menudo usamos, que se caerá si accidentalmente. Déjame darte un ejemplo normal:
<select id = "findActiveBlogWithTitLelike" Parametertype = "Blog" resultType = "Blog"> Seleccionar * de Blog Where State = 'Active' <if test = "Title! = NULL"> y Título como #{Title} </if> </select>En el ejemplo anterior, cuando el título no es igual a NULL, las condiciones en la etiqueta <if> se empalmarán, de modo que la instrucción SQL sea dinámica.
Pero cuando juzgamos todas las condiciones, ¿escribe de esta manera?
<select id = "findActiveBlogWithTitLelike" Parametertype = "Blog" resultType = "Blog"> Seleccionar * de Blog Where <if test = "userId! = null"> state = 'activo' </if> <if test = "title! = null"> y title como #{title} </if> </sect>No hay problema, ¿verdad? Al menos es sintácticamente bueno, al menos puede generar un SQL normalmente.
Sin embargo, no sé si has notado que cuando todas las condiciones son nulas, ¿qué sucede?
Seleccione * del blog donde
¿Lo has visto? ¿Se puede ejecutar con éxito tal SQL?
La respuesta es, por supuesto, no.
Entonces, ¿qué debo hacer? Luego, recuerde que cuando escriba SQL dinámico, primero considere si todas las condiciones ocurrirán si todas las condiciones no son ciertas, y si solo habrá una de las condiciones. Entonces, todo lo que tiene que hacer es agregar una etiqueta <Where> para envolver todas las condiciones.
<select id = "findActiveBlogWitHTitLelike" Parametertype = "Blog" resultType = "Blog"> Seleccionar * de Blog <Where> <if test = "userId! = null"> state = 'activo' </if> <if "title! = null"> y title como #{title} </if> </where> </select>De esta manera, cuando todas las condiciones no son ciertas, dónde no se explicarán.
En este momento, el amigo inteligente descubrió que si la primera condición no es cierta y la segunda condición es cierta, ¿se convertirá en SQL así?
Seleccione * del blog de la que ye y el título como #{title}No se preocupe, cuando use la etiqueta <if> para rodear las condiciones, se eliminará automáticamente y.
Lo anterior es la pequeña trampa de usar etiquetas SQL dinámicas por parte del editor para presentarle por MyBatis. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!