Lecture recommandée:
Tutoriel d'apprentissage MyBatis Introduction (I) - Mybatis rapide Start
Qu'est-ce que Dynamic SQL? Quelle est la fonction de Dynamic SQL?
Dans la manière traditionnelle d'utiliser JDBC, je crois que lorsque vous combinez des instructions SQL complexes, vous devez les épisser. Si vous ne faites pas attention, même si vous manquez d'espaces, cela entraînera des erreurs. La fonction SQL dynamique de MyBatis est de résoudre ce problème. Il peut être combiné dans des instructions SQL très flexibles via le if, choisissez, quand, sinon, la garniture, où, définit, foreach des étiquettes, améliorant ainsi l'efficacité des développeurs.
Voyons le charme de Mybatis Dynamic SQL:
1. Si: vous pouvez juger, et je peux juger aussi!
En tant que programmeur, qui ne comprend pas si! Vous pouvez également utiliser si dans mybatis:
<select id = "FindUserByid" resultType = "User"> SELECT * FROM User où <if test = "id! = null"> id = # {id} </ if> et deleteflag = 0; </lect>L'exemple ci-dessus: si l'ID entrant n'est pas vide, alors SQL épissera ID = # {id}. Je crois que tout le monde peut comprendre cela en le lisant, et je ne dirai pas grand-chose.
Les gens prudents trouveront un problème: "C'est mal avec vous! Si l'ID que vous transmettez est nul, alors votre instruction SQL finale deviendra sélectionnée * parmi l'utilisateur où et DeleteFlag = 0, il y a un problème avec cette déclaration!"
Oui, à ce moment, la tag de Mybatis doit être grandement fabriquée:
2. Où, avec moi, les conditions d'épissage des déclarations SQL sont toutes sur les nuages!
Modifions l'exemple ci-dessus à travers où:
<select id = "FindUserById" resultType = "User"> SELECT * From User Where <Where> <if test = "id! = NULL"> id = # {id} </ if> et deleteFlag = 0; </ Where> </ Select>Certaines personnes sont sur le point de demander: "Que faites-vous? Par rapport à ce qui précède, il y a juste un extra où la balise! Est-ce que cela apparaîtra encore sélectionner * par l'utilisateur où et deleteflag = 0?"
En effet, en surface, il y a juste un extra où la balise, mais en substance, Mybatis y fait face. Lorsqu'il rencontre et ou ou, il sait comment y faire face. En fait, nous pouvons personnaliser ces règles de traitement via la balise de garniture.
3. Trim: Mon territoire, je prends la décision!
Ce qui précède où la balise peut être exprimée comme suit en utilisant la garniture:
<trim prefix = "où" prefixoverrides = "et | ou"> ... </mim>
Cela signifie: où est suivi et ou ou, ou ou ou est supprimé. En plus de l'endroit où, il y a en fait une autre implémentation classique, qui est définie.
4. Set: Croyez-moi, pas d'erreurs!
<update id = "UpdateUser" ParameterType = "com.dy.entity.user"> Mise à jour le jeu d'utilisateurs <if test = "name! = null"> name = # {name}, </ if> <if test = "mot de passe! = null"> mot de passe = # {mot de passe}, </ if> <if test = "Age! = Null"> Age = # {~} null "> id = # {id} </ if> et deleteflag = 0; </ where> </dated>La question revient: "Si je n'ai que le nom mais pas Null, alors ce SQL devient mis à jour SET Name = # {Name}, où .........? La virgule après votre nom provoquera une erreur!"
Oui, pour le moment, vous pouvez utiliser la balise de set fournie par MyBatis pour nous. Les éléments suivants sont modifiés via la balise de set:
<update id = "UpdateUser" ParameterType = "com.dy.entity.user"> Update User set <set> <if test = "name! = null"> name = # {name}, </ if> <if test = "mot de passe! = null"> password = # {mot de passe}, </ if> <if test = "Âge! = null"> Age = # {gence test = "id! = null"> id = # {id} </ if> et deleteflag = 0; </ where> </dated>Cela peut être exprimé comme:
<trim prefix = "set" suffixOverrides = ","> ... </mim>
Où utilise des préfixoverrides (préfixe), Set utilise SuffixOverrides (suffixe), vous pouvez le comprendre!
5. Foreach: vous avez pour, j'ai foreach, je ne pense pas que ce soit juste vous!
Il y a pour Java, et il peut être bouclé pour. De même, il y a un foreach dans mybatis, et il peut être utilisé pour implémenter des boucles. Bien sûr, les objets en boucle sont principalement des conteneurs Java et des tableaux.
<select id = "selectpostin" resultType = "domain.blog.post"> SELECT * From Post pwhere id dans <foreach item = "item" index = "index" collection = "list" open = "(" séparateur = "," close = ")"> # {item} </ foreach> </lect>Passez une instance de liste ou un tableau en tant qu'objet de paramètre à mybatis. Ce faisant, MyBatis l'enveloppera automatiquement sur une carte et utilisera le nom comme clé. L'instance de liste prendra la "liste" comme clé, et la clé de l'instance de tableau sera "Array". De même, lorsque l'objet Loop est une carte, l'index est en fait la clé de carte.
6. Choisissez: Je t'ai choisi, tu m'as choisi!
Il y a un changement dans Java et Mybatis a le choix.
<select id = "findactivebloglily" resultType = "blog"> sélectionner * dans le blog où state = 'active' <poose> <when test = "title! = null"> and title like # {title} </ when> <quand test = "auteur! = null et auteur.name! = null"> et auteur_name comme # {audom} </ quand> <sinon> et en a fait paraître = 1;Dans l'exemple ci-dessus: lorsque ni le titre ni l'auteur n'est nul, choisissez l'un des deux (le premier est préféré). Si les deux sont nuls, choisissez celui autrement. S'il n'y a qu'un seul de Tilte et d'auteur qui n'est pas nul, choisissez celui qui n'est pas nul.
Ce qui précède est le tutoriel d'introduction pour MyBatis (IV) de MyBatis Dynamic SQL présenté à vous. 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!