Leitura recomendada:
Mybatis Introdução Tutorial de Aprendizagem (i) - Mybatis Start Quick Start
O que é SQL dinâmico? O que é a função dinâmica do SQL?
Da maneira tradicional de usar o JDBC, acredito que quando você combina declarações SQL complexas, precisa consumir -as. Se você não tomar cuidado, mesmo que não tenha espaços, isso levará a erros. A função SQL dinâmica da Mybatis é resolver esse problema. Ele pode ser combinado em instruções SQL muito flexíveis por meio do IF, escolha, quando, caso contrário, aparar, onde, definir, formar tags, melhorando assim a eficiência dos desenvolvedores.
Vamos experimentar o charme do Mybatis Dynamic SQL:
1. Se: você pode julgar, e eu também posso julgar!
Como programador, quem não entende se! Você também pode usar se em mybatis:
<select id = "findUserById" resultype = "user"> selecione * do usuário onde <se test = "id! = null"> id =#{id} </if> e deleteflag = 0;O exemplo acima: se o ID recebido não estiver vazio, o SQL será splice id = #{id}. Acredito que todos possam entender isso lendo -o, e não vou dizer muito.
Pessoas cuidadosas encontrarão um problema: "Isso está errado com você! Se o ID que você passar for nulo, sua instrução SQL final será selecionada * do usuário onde e deleteflag = 0, há um problema com esta afirmação!"
Sim, neste momento, a etiqueta de Mybatis deve ser feita grandiosamente:
2. Onde, comigo, as condições de emenda de declaração SQL têm tudo a ver com as nuvens!
Vamos modificar o exemplo acima através de onde:
<select id = "findUserById" resultype = "user"> selecione * do usuário onde <where> <se test = "id! = null"> id =#{id} </if> e deleteflag = 0; </where> </leclect>Algumas pessoas estão prestes a perguntar: "O que você está fazendo? Comparado com o acima, há apenas um extra onde a tag! Isso ainda parecerá selecionado * do usuário onde e deleteflag = 0?"
De fato, na superfície, há apenas um extra onde a tag, mas, em essência, Mybatis lida com isso. Quando encontra e ou ou, sabe como lidar com isso. De fato, podemos personalizar essas regras de processamento através da tag de acabamento.
3. TRIM: Meu território, eu tomo a decisão!
O acima, onde a tag pode ser expressa o seguinte usando o TRIM:
<TRIM prefix = "Where" prefixoverrides = "e | ou"> ... </avim>
Significa: quando onde é seguido por e ou ou, e ou ou é removido. Além de onde, na verdade, há outra implementação clássica, que está definido.
4. Conjunto: Acredite, sem erros!
<update id = "updateUser" parameterType = "com.dy.entity.User"> Atualizar conjunto de usuários null "> id = #{id} </if> e deleteflag = 0; </where> </puta>A pergunta vem novamente: "Se eu só tenho nome, mas não é nulo, então esse SQL se torna atualizado definir nome = #{nome}, onde .........? A vírgula após o seu nome causará um erro!"
Sim, neste momento, você pode usar a etiqueta definida fornecida pela Mybatis para nós. O seguinte é modificado através da tag definida:
<update id = "updateUser" parametertype = "com.dy.entity.user"> atualizar conjunto de usuários <Set> <se test = "name! = null"> name = #{name}, </if> <se test = "senha! test = "id! = null"> id = #{id} </if> e deleteflag = 0; </where> </patate>Isso pode ser expresso como:
<TRIM prefix = "Set" sufixoverrides = ","> ... </rod>
Onde usa prefixarrides (prefixo), o set usa sufixosverrides (sufixo), você pode entendê -lo!
5. foreach: Você tem para, eu tenho que cada, não acho que seja apenas você!
Existe para Java, e pode ser loop adquirido. Da mesma forma, há para cada um em Mybatis e pode ser usado para implementar loops. Obviamente, os objetos em loop são principalmente recipientes e matrizes Java.
<select id = "SelectPostin" resultType = "domain.blog.post"> selecione *do post Pwhere ID em <foreach item = "item" index = "index" collection = "list" Open = "(" separator = "," Close = ")">#{item} </foreach> </leclect>Passe uma instância ou matriz de lista como um objeto de parâmetro para mybatis. Ao fazê -lo, o Mybatis o envolverá automaticamente em um mapa e usará o nome como chave. A instância da lista terá a "lista" como a chave, e a chave da instância da matriz será "Array". Da mesma forma, quando o objeto Loop é um mapa, o índice é na verdade a chave do mapa.
6. Escolha: Eu escolhi você, você me escolheu!
Há o Switch em Java, e Mybatis tem escolha.
<select id = "findactiveBlogLike" resultType = "Blog"> Selecione * do blog Where State = 'Active' <SOHET> <Quando test = "title! = null"> e title como #{title} </when> <When Test = "Author!No exemplo acima: quando nem o título nem o autor são nulos, escolha um dos dois (o primeiro é preferido). Se ambos forem nulos, escolha o outro. Se houver apenas um de tilte e autor que não é nulo, escolha o que não é nulo.
O acima é o tutorial de introdução para Mybatis (IV) do Mybatis Dynamic SQL apresentado a você. 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!