API Java
Maintenant que vous savez comment configurer MyBatis et créer des fichiers de mappage, vous êtes prêt à améliorer vos compétences. L'API Java de Mybatis est l'endroit où vous récoltez les efforts que vous avez faits. Comme vous le verrez, par rapport à JDBC, MyBatis simplifie considérablement votre code et reste simple, facile à comprendre et à entretenir. Mybatis 3 a introduit de nombreuses améliorations importantes pour améliorer la cartographie SQL.
Mybatis 3 est construit sur une API de configuration Java complète et puissante. Cette API de configuration est la base de la configuration MyBatis basée sur XML et est également la base d'une nouvelle configuration basée sur l'annotation.
Les annotations fournissent un moyen simple de mettre en œuvre des instructions de mappage simples sans introduire beaucoup de frais généraux.
Les cibles et étiquettes correspondantes des annotations communes de MyBatis sont indiquées dans le tableau:
| annotation | Cible | Tags XML correspondants |
| @Cachenamespace | gentil | <cache> |
| @Cachenamespaceref | gentil | <cacheref> |
| @Résultats | méthode | <SultMap> |
| @Résultat | méthode | <Résultat> <id> |
| @Un | méthode | <sociation> |
| @Beaucoup | méthode | <collection> |
@Insérer @Mise à jour @Supprimer | méthode | <insert> <ftedate> <Delete> |
@Insertprovider @Updateprovider @Deleteprovider @Selectprovider | méthode | <insert> <ftedate> <Delete> <élect> Permet la création de SQL dynamique |
| @Param | paramètre | N / A |
| @Options | méthode | Propriétés des déclarations de cartographie |
| @sélectionner | méthode | <élect> |
Le sens des annotations communes de Mybatis:
@Cachenamespace (size = 512): définit l'utilisation de caches intégrées dans cet espace de noms
@Options (useCache = true, flushcache = false, timeout = 10000): commutateur d'option pour certaines requêtes
@Param ("id"): alias globalement qualifié, la position des paramètres de requête dans l'instruction SQL n'est plus sous la forme de 0, 1, 2, 3 ..., des indices séquentiels, mais le nom correspondant, qui est défini ici.
@Results est un tableau avec @Result comme élément. @Result représente la relation de cartographie d'un seul champ d'attribut. id = true signifie que le champ ID est la clé principale. Mybatis donnera les optimisations nécessaires pendant la requête. Tous les @Results dans le tableau forment une relation de cartographie d'un seul enregistrement, tandis que @Results est une collection d'un seul enregistrement. De plus, il y a une annotation très importante @ResultMap, qui est similaire à @Results
@Select ("Instruction Query"), @Insert ("Ajouter une instruction"), @UpDate ("Instruction de mise à jour") et @Delete ("Delete Instruction") Représenter les opérations pour interroger, ajouter, mettre à jour et supprimer des données.
Ensuite, jetons un coup d'œil à l'utilisation des annotations.
(1) Utilisation d'annotations régulières (aucune opération de carte personnalisée requise):
Exemple 1
// Ajouter l'auteur @insert ("Insertinto Auteur (nom d'utilisateur, mot de passe, e-mail, adresse, téléphone)" + "valeurs (# {nom d'utilisateur}, # {mot de passe}, # {email}, # {adresse}, # {téléphone})") @ options (useGeneratedKeys = true) auteur); // delete auteur @Delete ("DeleteFrom Auteur où id = # {id}") @ options (flushcache = false, timeout = 10000) public voidDeleTAuthor (@param ("id") int id); Astuce: vous devez enregistrer un mappeur avant d'appeler la méthode:
sessionfactory.getConfiguration (). AddMapper (TesInteger.Class);
Ou configurer <mappel> </caper> dans Mappel.xml
Après votre inscription, obtenez l'interface de mappel à appeler normalement
(2) Si vous avez besoin de personnaliser la carte, vous pouvez utiliser l'annotation des résultats:
Exemple 2
// requête toutes les informations de l'auteur @Select ("SELECT * FROM Auteur") @ Options (FlushCache = False, Timeout = 10000, UseCache = true) @Results (Value = {@Result (id = true, Column = "ID", propriété = "ID"), @Result (propriété = "Username", Column = "Username"), @Result (Property = "Motway @Result (propriété = "e-mail", colonnes = "e-mail"), @Result (propriété = "adresse", colonnes = "adresse"), @Result (propriété = "téléphone", colonnes = "téléphone")}) Liste publique <auteur> findAuthors (); // interroger les informations d'une certaine autorité @Select ("SELECT * à partir de l'auteur où id = # {id}") @ options (fllushcache = false, false, usine WHERE ID = # {id} ") @ Options (fllushCache = FAWL = 10000, useCache = true) @Results (value = {@Result (id = true, column = "id", propriété = "id"), @Result (propriété = "username", column = "username"), @Result = "mot de passe", column = "mot de passe"), @Result (propriété = "e-mail", colonnes = "e-mail"), @ résultat (propriété ",") ") @Result (propriété = "téléphone", colonnes = "téléphone")}) Auteur public findAuthorById (@param ("id") INTID); Si la structure de jeu de résultats renvoyée par plusieurs requêtes est la même, vous pouvez utiliser @ResultMap pour définir la structure de retour. En utilisant cette annotation, vous devrez configurer votre résultat ResultMap dans votre fichier de mappage. @ResultMap (value = "name") est l'ID de résultat dans le fichier de mappage. De cette façon, vous devez enregistrer votre fichier de configuration dans <Mapper> et utiliser @ResultMap dans l'interface pour référencer l'ID ResultMap dans le fichier de configuration comme suit:
Exemple 3
Selfmapper.xml
// Chaque ligne d'enregistrement est un hashmap <resultMapType = "java.util.hashmap" id = "selfmap"> <resultproperty = "n" colonnes = "city_name" /> ....... </cultMap>
Selfmapper.java:
@Select ("SELECT A.ID, B.NAME, C.STATE FROM ............") @ ResultMap (Value = "Selfmap") Liste publique <shmap> sel (); // Notez que la collection de liste renvoyée Complexe
Code d'interface
package com.obtk.dao; import java.util.hashmap; Importer java.util.list; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.options; import org.apache.ibatis.annotations.results; import org.apache.ibatis.annotations.results; import org.apache.ibatis.annotations.Select; import com.obtk.entitys.studententity; Interface publique Istudentdao {@Insert ("Insérer dans Student (Stuname, Gender, Age, Address, Deptidd)" + "Values (# {Stuname}, # {Gender}, # {Age}, # {Address}, # {Deptid})") @options (UseGeneredKeys = True, Keyproperty = "Stuid" Stu); @Select ("SELECT * FROM Student Where Stuid = # {Stuid}") @Results (// Tant que la valeur de propriété qui est incompatible avec le nom de la colonne est configurée, Value = {@Result (Column = "Gender". @Select ("SELECT * FROM Student Where Sexe = # {qqq} et adresse = # {Area}") @Results (// Aussi longtemps que la valeur de la propriété de configuration = {@Result (Column = "Gender", Property = "Sex")}) List <StudentEntity> QueryBymany (Hashmap ThemAp); // Universal Association Annotation Configuration @Select ("SELECT * From Student s Inner Join Department D" + "sur s.deptidd = d.deptid" + "où s.gender = # {sexe}" + "et d.departname = # {deptname}") List <shmap> QueryBynkn (hashmap themap); } Cas 1 interroger un objet
package com.obtk.test; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; classe publique Annoselectone {public static void main (String [] args) {SqlSession Session = null; SQLSessionFactory Factory = null; essayez {session = mybatisUtil.getSession (); factory = mybatisUtil.getFactory (); // associer la configuration SQL dans l'interface avec le fichier de configuration de base factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getmapper (istudentdao.class); StudentEntity Stu = Studao.QueryByid (129); System.out.println (stu.getStuname () + "," + stu.getSex () + "," + stu.getAddress () + "," + stu.getstuid ()); } catch (exception e) {e.printStackTrace (); } enfin {mybatisUtil.closeSession (); }}} Cas 2 passer plusieurs paramètres et interroger plusieurs objets
package com.obtk.test; import java.util.hashmap; Importer java.util.list; importation java.util.map; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; classe publique AnnoselectMany {public static void main (String [] args) {sqlSession session = null; SQLSessionFactory Factory = null; essayez {session = mybatisUtil.getSession (); factory = mybatisUtil.getFactory (); // associer la configuration SQL dans l'interface avec le fichier de configuration de base factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getmapper (istudentdao.class); Hashmap Parammap = new hashmap (); Parammap.put ("qqq", "mâle"); Parammap.put ("Area", "Student Dormitory"); Liste <Suppurty> Stulist = Studao.QueryBymany (Parammap); pour (StudentEntity Stu: Stulist) {System.out.println (stu.getStuname () + "," + stu.getSEx () + "," + stu.getAddress () + "," + stu.getStuid ()); }} catch (exception e) {e.printStackTrace (); } enfin {mybatisUtil.closeSession (); }}} Cas 3 Ajouter un objet
package com.obtk.test; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; classe publique AnnosaveTest {public static void main (String [] args) {SQLSession Session = NULL; SQLSessionFactory Factory = null; essayez {session = mybatisUtil.getSession (); factory = mybatisUtil.getFactory (); // a lié la configuration SQL dans l'interface avec le fichier de configuration de base factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getmapper (istudentdao.class); StudentEntity Stu = New StudentEntity ("testc #", "mâle", 21, "Pluton"); Stu.setdeptidd (10); INT Result = Studao.SaveOne (STU); session.Commit (); System.out.println ("Enregistrer avec succès:" + stu.getStuid ()); } catch (exception e) {e.printStackTrace (); } enfin {mybatisUtil.closeSession (); }}}Cas 4 Utiliser Hashmap pour la requête d'association
package com.obtk.test; import java.util.hashmap; Importer java.util.list; importation java.util.map; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; classe publique AnnoJoinQnn {public static void main (String [] args) {SqlSession Session = null; SQLSessionFactory Factory = null; essayez {// 4. Obtenez une session de session = mybatisUtil.getSession (); factory = mybatisUtil.getFactory (); // associer la configuration SQL dans l'interface avec le fichier de configuration de base factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getmapper (istudentdao.class); Hashmap Parammap = new hashmap (); Parammap.put ("Sex", "Male"); Parammap.put ("Deptname", "Système informatique"); // 5. Exécuter la liste des instructions <shmap> stulist = studao.querybynn (Parammap); for (hashmap theobj: stulist) {System.out.println (theobj.get ("Stuid") + "," + theObj.get ("Gender") + "," + theObj.get ("stuname") + "," + theObj.get ("Departname")); }} catch (exception e) {e.printStackTrace (); } enfin {mybatisUtil.closeSession (); }}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.