L'une des caractéristiques puissantes de MyBatis est généralement ses capacités dynamiques SQL. Si vous avez de l'expérience en utilisant JDBC ou d'autres cadres similaires, vous comprenez à quel point il est douloureux de concaténer conditionnellement les chaînes SQL, assurez-vous que vous ne pouvez pas oublier les espaces ou omettre des virgules à la fin de la liste. SQL dynamique peut soigneusement gérer cette douleur.
SQL dynamique
Dynamic SQL de MyBatis résout la douleur de l'épissage de la chaîne SQL.
1. Si
<select id = "findactiveblogwithTitlelike" ParameterType = "blog" resultType = "Blog"> SELECT * FROM BLOGOWERWORD STATE = 'active' <if test = "Title! = NULL"> Et Title Like # {Title} </ if> </ Select> Cette phrase fournira une fonction de recherche de texte en option. Si aucun titre n'est passé, tous les blogs activés seront retournés.
Si un titre est passé, le titre similaire sera trouvé.
2. Choisissez, quand, sinon
<select id = "findactivebloglily" paramètreType = "blog" resultType = "blog"> sélectionner * dans blogwhere <moose> <quand test = "title! = null"> et title comme # {title} </ when> <quand test = "auteur! = null et auteur.name! = null"> et titre comme # {audom} </3 1 </ sinon> </ choisis> </lect> Remarque: si aucune des conditions ci-dessus ne correspond, elle deviendra sélectionnée * sur le blog où
S'il n'y a qu'un deuxième match, il deviendra sélectionné * sur le blog où et le titre comme Somelike
De toute évidence, cela échouera dans la requête. Pour résoudre ce problème, MyBatis fournit une solution.
<select id = "findactivebloglike" paramètreType = "blog" resultType = "blog"> select * from blogwhere <trim prefix = "where" prefixoverrides = "et | ou"> <moose> <quand test = "title! = null"> and title comme # {title} </ When> <When test = "Auth! = Null and Author.Name! = nul # {auteur.name} </ when> <sinon> et en vedette = 1 </ sinon> </ choix> </mim> </lect>La propriété Overrides est remplacée par un séparateur de texte de tuyau, et l'espace vierge est important ici. Le résultat est de supprimer le contenu spécifié dans les remplacements dans InnerText.
3. mettre
<update id = "updateAuthorifnessary" ParameterType = "Author"> Update Author <Set> <if test = "username! = null"> username = # {username}, </ if> <if test = "mot de passe! = null"> mot de passe = # {mot de passe}, </ if> <if test = "e-mail! = Null"> Courriel = # #} id = # {id} </dated>Le même problème que ci-dessus, après optimisation:
<update id = "updateAuthorifnessesy" ParameterType = "Author"> Update Author <Trim Prefix = "WHERE" Prefixoverrides = ","> <set> <if test = "username! = null"> username = # {username}, </ if> <if test = "mot de passe! = Null"> Mords = # # # # {mot de passe}, </ if Test = "Word! = Null"> Password = # # # # null "> email = # {email} </ if> </set> où id = # {id} </mim> </fatedate>Ce qui précède est le problème de l'épissage dynamique de MyBatis des chaînes SQL présentées par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!