Una de las potentes características de MyBatis suele ser sus capacidades dinámicas de SQL. Si tiene experiencia en el uso de JDBC u otros marcos similares, comprende lo doloroso que es concatenar las cuerdas SQL juntas condicionalmente, asegúrese de no poder olvidar espacios u omitir comas al final de la lista. El SQL dinámico puede manejar este dolor a fondo.
SQL dinámico
El SQL dinámico de MyBatis resuelve el dolor del empalme de cadena SQL.
1.Isi
<select id = "findActiveBlogWithTitLelike" Parametertype = "Blog" resultType = "Blog"> SELECT * De BlogWhere State = 'Active' <if test = "Title! = Null"> y Título como #{Title} </if> </select> Esta oración proporcionará una función de búsqueda de texto opcional. Si no se pasa ningún título, se devolverán todos los blogs activados.
Si se pasa un título, se encontrará el título similar.
2. Elige, cuándo, de lo contrario
<select id = "findActiveBloglike" Parametertype = "Blog" resultType = "Blog"> Seleccionar * de BlogWhere <Chowe> <When test = "Title! = Null" y Title Like #{title} </when> <when test = "autor! = null and autor.name! = null"> y title como #{autor.name} </when> <SO lo contrario> y aparece = 1 </stether> </lowe> </select> Nota: Si ninguna de las condiciones anteriores coincide, se convertirá en seleccionar * del blog donde
Si solo hay un segundo partido, se convertirá en selección * del blog donde y el título como Somelike
Obviamente, esto fallará en la consulta. Para resolver este problema, MyBatis proporciona una solución.
<select id = "findActiveBloglike" Parametertype = "Blog" dentType = "Blog"> SELECT * De BlogWhere <TRIM prefix = "Where" PrefiXeverrides = "y | o"> <Chowe> <When test = "Title! = Null"> y Título como #{Title} </When> <When Test = "Autor! = Autor y Autor! = Null" #{Author.name} </when> <lo contrario> y destacado = 1 </mínimo> </elige> </crim> </select>La propiedad de anulación se anula con un separador de texto de tubería, y el espacio en blanco es importante aquí. El resultado es eliminar el contenido especificado en anulación en inntext.
3.Set
<update id = "updataAuthorifNeceSary" parametertype = "autor"> update autor <set> <if "username! = null"> username =#{username}, </if> <if test = "contraseña! = null"> contraseña =#{contraseña}, </if> <if test = "correo electrónico! id =#{id} </update>El mismo problema que el anterior, después de la optimización:
<update id = "updataAuthorifNeceSary" parametertype = "autor"> update autor <TRIM prefix = "Where" prefiXoverRides = ","> <set> <if test = "username! = null"> username =#{username}, </if> <if test = "contraseña! = null"> contraseña =#{contraseña}, </if </if </if </si> " NULL "> Correo electrónico =#{correo electrónico} </if> </set> where id =#{id} </tripl> </update>Lo anterior es el problema del empalme dinámico myBatis de las cadenas SQL presentadas por el editor. 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!