Tal vez muchos zapatos para niños no están muy claros de que en mybatis, se pueden usar varios idiomas de secuencias de comandos para definir SQL dinámico en el archivo mapeador; Actualmente, MyBatis admite que los idiomas de secuencias de comandos incluyen XML (predeterminado); Velocidad y marca libre. Use diferentes idiomas de secuencias de comandos para completar la redacción de archivos mapeadores. El primero es usar el lenguaje de secuencias de comandos con el que está familiarizado, y el segundo es definir más y ricas instrucciones personalizadas para simplificar el desarrollo de Mapper. Con respecto al análisis principal de los scripts de soporte de MyBatis, y luego escriba un artículo para analizar las instrucciones de secuencias de comandos personalizadas. Este artículo presenta por primera vez el uso de scripts de velocidad en MyBatis.
El proyecto MyBatis-Velocity le permite utilizar convenientemente la velocidad como lenguaje de secuencias de comandos para completar la redacción de varios SQL dinámico en los archivos mapper.
Tenga en cuenta que la velocidad se usa ampliamente en los scripts. Si no está familiarizado con él, primero puede consultar el script de velocidad;
Instalar
Agregar en Maven
<Spendency> <MoupRoMID> org.mybatis.scripting </groupid> <artifactId> myBatis-Velocity </arfactid> <versión> 1.2 </versión> </pendency>
Tenga en cuenta que estamos utilizando la versión 1.2 de MyBatis-Velocity, que requiere soporte MyBatis3.3;
En el archivo de configuración de MyBatis, configure el motor de script de velocidad como el motor de archivo mapper predeterminado:
<Pyypealiases> ... <typealias type = "org.mybatis.scripting.velocity.driver" alias = "velocidad"/> </typealiases> <nettings> ... <setting name = "defaultScriptingLanguage" value = "Velocity"/> </ettentings>
La configuración está completa.
A continuación, puede usar el script de velocidad en el archivo mapper:
<select id = "findperson" lang = "velocidad"> #set ($ patrón = $ _parameter.name + '%') Seleccione * de la persona donde el nombre como @{patrón, jdbctype = varchar} </select>Aviso:
Si se usa velocidad, los parámetros deben referenciarse usando @{}, porque la directiva de velocidad comienza con #, como #set #if, etc.;
Usando el script de velocidad, también puede configurar el Javatype y JDBCType correspondiente en los parámetros; El formato de configuración es: @{Propiedad, attr1 = val1, attr2 = val2, ...}; Los elementos configurables son Javatype, JDBCType, Mode, Numericscale, ResultMap, TypeHandler, JDBCTypeName;
Use variables en contexto en las directivas de velocidad y use $ _parameter como referencia de prefijo, por ejemplo
#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') y nombre como @{_ name} #endComando integrado mybatis-Velocity
Además de la directiva de velocidad, el proyecto MyBatis-Velocity define algunas directivas de velocidad incorporadas para MyBatis:
recortar
#Trim (prefijo prefiXoverrides sufijo sufijoeverrides) cuerpo #end
El significado de los parámetros en él es el mismo que el significado del parámetro de acabado en xml;
Un ejemplo:
#trim ("donde" "y | o")#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') y nombre como @{_ name}#final#final dónde
#where () cuerpo #end #where () es lo mismo que <donde> en xml. Puede reemplazar y/o antes de la condición y reemplazarla con dónde; Tenga en cuenta que /dónde () tiene soportes;
metio
#mset () cuerpo #end #mset se agrega una m antes de él, para distinguirlo de la directiva #set de la velocidad en sí. #mset es equivalente al elemento <set> en xml. Puede agregar una instrucción establecida antes de la condición y eliminar el punto y coma en el último bloque de conjunto;
Un ejemplo:
<update id = "update"> uply user #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) age =@{age}, #end #if ($ _ parámetro.borndate) borndate =@{borndate #end #end #end en #id =@{id} </update>> repetir
#Repeat (Collection var separator Open Close) Body #End #Repetir la directiva es la misma que el elemento <FideEach> en XML. Puede atravesar fácilmente los elementos de tipo de colección/matriz y usar cada elemento en él:
Un ejemplo:
Seleccione *de la ciudad #where () #repeat ($ _parameter.ids $ id "," "state_id in (" ")") @{id} #end #final en
#In (COLECCIÓN VAR CAMPO) CUERPO #End
La Directiva #In es una nueva directiva que puede generar rápidamente el campo correspondiente en la instrucción () para en condiciones en SQL; En la lista de parámetros, la colección representa el contenido en el IN a ser atravesado; VAR representa el nombre de referencia temporal de cada objeto en el recorrido; El campo representa el nombre de campo generado antes de la declaración en;
Un ejemplo:
Seleccione *de la ciudad #where () #in ($ _parameter.ids $ id "state_id") @{id} #end #finalComandos personalizados
MyBatis-Velocity le permite personalizar convenientemente sus propias instrucciones para simplificar el desarrollo. Los pasos de las instrucciones personalizadas son:
Agregue un archivo de configuración MyBatis-Velocity.Properties en ClassPath;
Cree su propia clase de análisis de la Directiva de Velocidad;
Agregue la clase de análisis de la Directiva Velocity que creó al archivo de configuración;
Use directivas en el archivo mapper.xml;
Un ejemplo:
// DirectivePackage definido por el usuario com.myproject.Directives; // Las clases de directiva personalizadas deben heredar las clases de directiva; Public Class MyDirective extiende la Directiva {} // mybatis-velocity.properties// Si hay múltiples clases de directiva personalizadas, separarlas con semicolones; userDirective = com.myproject.Directives.MyDirective; // Mapper XML FileSelect *De la ciudad #mydirective () ...... #endUso integral
Si usa Velocity-Mybatis, un mapeador CRUD típico puede verse así:
<mapper namespace = "mybatis.com._520it.mybatis.usermapper"> <resultmap type = "user" id = "user_mapping"> <id columna = "id" propiedad = "id"/> <resultado columna = "name" propiedad = "name"/> <resultado columna = "edad" propiedad = "edad"/> <resulte columna = "borndate" property = "name"/"resulte =" columna = "born column" borndate " Propiedad = "BornDate"/> <resultMap> <Insert ID = "Agregar" keyColumn = "id" keyProperty = "id" useGeneratedKeys = "true"> Insertar en el usuario (name, edad, borndate) valores (@{name, javatype = string, jdbctype = varchar},@{edad},@{{{borndate}) </inserts #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) edad =@{age}, #end #if ($ _ parameter.borndate)) @{id} </eletete> <sql id = "user_column"> id, nombre, edad, date de born </sql> <select id = "get" resultmap = "user_mapping"> select <incluido refid = "use_column"/> de user iD = @{id} </select> <select> <"Lista" LIST "LIST" ResultMap = "User_mapping" referido = "user_column"/> de user </select> <select id = "listbyName" resultMap = "user_mapping" parametertype = "string"> select <include refid = "user_column"/> de user where name = {name} </select> <select id = "queryby" resultmap = "us_mapping"> select id, nombre, edad, edad, nacido, nacido User#where ()#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') y nombre como @{_ name}#end#end#if ($ _ parameter.orderBy) ordenar por @{ordenby} @{OrderType}#end##if ($ _ parameter.pagesize> -1) limit @{start}, @{pagesize} #end </select> </s mapper>Lo anterior es una explicación detallada del tutorial de uso del script de velocidad de mybatis presentada por el editor (recomendado). 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!