Uma das características poderosas do Mybatis é geralmente seus recursos dinâmicos de SQL. Se você tem experiência em usar o JDBC ou outras estruturas semelhantes, entende o quão doloroso é concatenar as seqüências de SQL juntos condicionalmente, verifique se não pode esquecer os espaços ou omitir vírgulas no final da lista. O SQL dinâmico pode lidar com essa dor completamente.
Sql dinâmico
O SQL dinâmico da Mybatis resolve a dor do splicing de cordas SQL.
1.Ef
<select id = "findactiveBlogwithtitlelike" parametertype = "blog" resulttype = "blog"> selecione * do blogwhere state = 'attive' <if "title!
Esta frase fornecerá uma função opcional de pesquisa de texto. Se nenhum título for aprovado, todos os blogs ativados serão devolvidos.
Se um título for passado, o título semelhante será encontrado.
2. Escolha, quando, caso contrário
<select id = "findactiveBlogLike" parameterType = "blog" resultType = "Blog"> Selecione * do blogwhere <escolha> <Quando test = "title! = null"> e title como #{title} </when> when test = "autor! = null e autor.name! 1 </si mesmo> </fiar> </leclect> Nota: Se nenhuma das condições acima corresponder, ele se selecionará * do blog onde
Se houver apenas uma segunda partida, ele será selecionado * do blog onde e título como somelike
Obviamente, isso falhará na consulta. Para resolver esse problema, o Mybatis fornece uma solução.
<select id = "findActiveBLogLike" parameterType = "blog" resultType = "Blog"> Selecione * do blogwhere <Trim prefix = "Where" prefixoverrides = "e | ou"> <escolha> <quando test = "title! #{Author.name} </when> <caso contrário, e em destaque = 1 </nocros>A propriedade substituta é substituída por um separador de texto de tubo e o espaço em branco é importante aqui. O resultado é remover o conteúdo especificado nas substituições no InnerText.
3.Set
<update id = "updateAuthorifneCessary" parameterType = "Author"> Atualizar autor <Set> <se test = "Nome de usuário! = null"> username =#{username}, </se> <se test = "em email! id =#{id} </puta>O mesmo problema acima, após a otimização:
<update id = "updateAuthorifneCessary" parameterType = "Author"> Atualizar autor <Trim prefix = "Where" prefixoverrides = ","> <Set> <se test = "nome de usuário! null "> email =#{email} </if> </set> where id =#{id} </avorO exposto acima é o problema do splicing dinâmico de Mybatis de strings SQL introduzidas pelo editor. 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!