Talvez os sapatos de muitas crianças não estejam muito claros que, em Mybatis, várias linguagens de script podem ser usadas para definir o SQL dinâmico no arquivo de mapeador; Atualmente, o Mybatis suporta linguagens de script incluem XML (padrão); Velocidade e freemarker. Use diferentes linguagens de script para concluir a redação de arquivos de mapeador. O primeiro é usar o idioma de script que você conhece, e o segundo é definir mais e ricas instruções personalizadas para simplificar o desenvolvimento do Mapper. Em relação à análise de princípios dos scripts de suporte do Mybatis e, em seguida, escreva um artigo para analisar as instruções de script personalizadas. Este artigo apresenta primeiro o uso de scripts de velocidade em mybatis.
O projeto Mybatis-Velocity permite que você use convenientemente a velocidade como uma linguagem de script para concluir a redação de vários SQL dinâmicos em arquivos de mapeador.
Observe que a velocidade é usada extensivamente em scripts. Se você não estiver familiarizado com isso, primeiro pode conferir o script de velocidade;
Instalar
Adicione maven
<Ependency> <voundid> org.mybatis.scriping </frupid> <TRATIFACTID> mybatis-velocity </artifactId> <versão> 1.2 </versão </dependency>
Observe que estamos usando o MyBatis-Velocity versão 1.2, que requer suporte ao mybatis3.3;
No arquivo de configuração Mybatis, defina o mecanismo de script de velocidade como o mecanismo de arquivo de mapeador padrão:
<TytyiAses> ... <typeAlias type = "org.mybatis.scripting.velocity.driver" Alias = "Velocity"/> </typeAliases> <fields> ... <Configurando name = "DefaultScriptingLanguage" Value = "Velocity"/> </Settings>
A configuração está completa.
Em seguida, você pode usar o script de velocidade no arquivo de mapeador:
<select id = "findPerson" Lang = "Velocity"> #set ($ padron
Perceber:
Se a velocidade for usada, os parâmetros devem ser referenciados usando @{}, porque a diretiva de velocidade começa com #, como #set #if, etc.;
Usando o script de velocidade, você também pode configurar o Javatype correspondente e o JDBCTYPE nos parâmetros; O formato de configuração é: @{propriedade, att1 = val1, att2 = val2, ...}; Os itens configuráveis são javatype, jdbctype, modo, numericscale, resultMap, typeHandler, jdbctypeName;
Use variáveis no contexto nas diretivas de velocidade e use $ _parameter como uma referência de prefixo, por exemplo
#if ($ _ parameter.name) #set ($ _ nome = '%'+$ _ parâmetro.name+'%') e nome como @{_ nome} #endComando mybatis-velocidade interno
Além da diretiva de velocidade, o projeto Mybatis-Velocity define algumas diretivas de velocidade internas para Mybatis:
aparar
#Trim (prefixo prefixarrides sufixo sufixarrides) #END #END
O significado dos parâmetros nele é o mesmo que o significado do parâmetro TRIM em XML;
Um exemplo:
#trim ("where" "e | ou")#if ($ _ parameter.name) #set ($ _ name = '%'+$ _ parameter.name+'%') e nome como @{_ nome}#end#end#end#end#end#end#end# onde
#where () corpo #final #where () é o mesmo que <where> em xml. Você pode substituir e/ou antes da condição e substituí -lo por onde; Observe que /onde () tem colchetes;
mSet
#mset () #End #MSET é adicionado um M antes dele, a fim de distingui -lo da diretiva #Set de velocidade. #mset é equivalente ao elemento <Set> no XML. Você pode adicionar uma instrução SET antes da condição e remover o ponto e vírgula no último bloco de conjunto;
Um exemplo:
<update id = "update"> update user #mset () #if ($ _ parameter.name) name =@{name}, #end #if ($ _ parameter.age) AGE =@{AGE}, #END # # # #_ Parameter.bornDate) BornTate =@{BornDate} #endive ID = _ {{@idate) {}} {{BornDate} #endwea repita
#Repeat (coleção var separador abrem fechamento) #final #Diretiva de repetição é a mesma do elemento <foreach> em xml. Ele pode facilmente atravessar os elementos do tipo de coleção/matriz e usar cada elemento nele:
Um exemplo:
Selecione *da cidade #where () #repeat ($ _parameter.ids $ id "," "state_id in (" ")") @{id} #end #end #end # em
#in (coleção Var Field) #END
A Diretiva #in é uma nova diretiva que pode gerar rapidamente a instrução CAMPO CORRESPONENTE EM () para as condições no SQL; Na lista de parâmetros, a coleção representa o conteúdo no in a ser percorrido; VAR representa o nome de referência temporária de cada objeto na travessia; O campo representa o nome do campo gerado antes da declaração in;
Um exemplo:
Selecione *da cidade #where () #in ($ _parameter.ids $ id "state_id") @{id} #final #finalComandos personalizados
O Mybatis-Velocity permite que você personalize convenientemente suas próprias instruções para simplificar o desenvolvimento. As etapas das instruções personalizadas são:
Adicione um arquivo de configuração Mybatis-comocity.properties no ClassPath;
Crie sua própria classe de análise de diretiva de velocidade;
Adicione a classe de análise Diretiva Velocity que você criou para o arquivo de configuração;
Use as diretivas no arquivo mapper.xml;
Um exemplo:
// DirectivePackage definido pelo usuário com.myProject.directives; // classes de diretiva personalizada precisam herdar classes de diretiva; Classe pública MyDirective Extends Diretiva {} // mybatis-velocity.properties// Se houver várias classes de diretiva personalizada, separe-as com semicolons; userDirection = com.myProject.directives.mydirective; // Mapper XML FileSelect *da cidade #mydirective () ...... #ENDUso abrangente
Se estiver usando o Velocity-Mybatis, um mapeador típico CRUD pode ser assim:
<mapper namespace="mybatis.com._520it.mybatis.UserMapper"><resultMap type="User" id="user_mapping"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><result column="borndate" property="bornDate"/><result Column = "BornDate" Property = "BornDate"/> <SILSILMAP> <inserir id = "add" keycolumn = "id" keyproperty = "id" usegeneratedkeys = "true"> inserir no usuário (nome, idade, valores de nascimentos) (@{name, javatype = string, jdbctype = varchar},@{idade},@{BornDate}) </insert> <update id = "update"> upding user #mset () #if ($ _ parameter.name) name =@{name}, end # # # #($ _ parâmetro #End #if ($ _ parameter.borndate) Born = @{BornDate} #END #ENDWER ID = @{ID} </Update> <Delete ID = "Delete" ParameterType = "Long"> Delete do Usuário onde id = @{id} </DeLete> <sql id = "sql) resultMap = "user_mapping"> selecione <incluir refid = "user_column"/> do usuário onde id = @{id} </select> <select ID = "list" resultmap = "user_mapping"> select <incluir refid = "user_column"/> user </select> <select id = "listbyName" Map refid = "user_column"/> do usuário onde name = @{name} </select> <select id = "queryby" resultMap = "user_mapping"> selecione ID, nome, idade, BornDateFrom User#where ()#if ($ _ parameter.name) #set ($ _ nome = '%'+$ _ parâmetro @{_ name}##final#End#if ($ _ parameter.orderby) order por @{orderby} @{orderType}#end#if ($ _ parameter.pagesize> -1) limite @{start}, @{Pagesize} #nd </select> </mapper>O exposto acima é uma explicação detalhada do tutorial de uso do script de velocidade Mybatis apresentado a você pelo editor (recomendado). Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!