Vulgarisation rapide
1. Qu'est-ce que Mybatis
MyBatis est un excellent cadre de couche de persistance qui prend en charge les requêtes SQL simples, les procédures stockées et la cartographie avancée.
MyBatis élimine les paramètres manuels de presque tous les code et paramètres JDBC et l'encapsulation de recherche de l'ensemble de résultats. MyBatis peut utiliser du XML ou des annotations simples pour la configuration et la cartographie originale, les interfaces de cartographie et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
MyBatis implémente la liaison de l'interface, ce qui le rend plus pratique à utiliser.
Mappage amélioré des relations d'objets, plus efficace
Mybatis utilise des expressions puissantes basées sur OGNL pour éliminer d'autres éléments.
2. Architecture fonctionnelle
3. Processus d'exécution
Explication détaillée du principe:
L'application MyBatis crée une SQLSessionFactory basée sur le fichier de configuration XML. La configuration provient de deux endroits en fonction de la configuration, l'une est le fichier de configuration et l'autre est l'annotation du code Java et obtient une SQLSession. SQLSession contient toutes les méthodes requises pour exécuter SQL. Vous pouvez exécuter directement les instructions SQL mappées via l'instance SQLSession pour compléter l'ajout de données, la suppression, la modification et la requête, la soumission des transactions, etc., et fermer SQLSession après utilisation.
Jetons un coup d'œil aux points clés de cet article. Annotations simples mybatis
Mots clés de l'annotation:
@Insert: insérer SQL, la syntaxe est exactement la même que XML INSERT SQL
@Select: Query SQL, et la syntaxe est exactement la même que XML Select SQL
@Update: mise à jour SQL, et la syntaxe de la mise à jour XML SQL est exactement la même
@Delete: Delete SQL, et la syntaxe est exactement la même que XML Supprimer SQL
@Param: entrez le ginseng
@Results: Collection de résultats
@Result: Résultats
1. Modèle de domaine:
classe publique Userdo {private long id; private String Name; Date private date gmtcreate; private date gmtmodified; public long getID () {return id;} public void setid (long id) {this.id = id;} public String getUsername () {return username;} public Void seinername (String username) {this.Username = username;} public; getgmtcreate () {return gmtcreate;} public void setgmtcreate (date gmtcreate) {this.gmtcreate = gmtcreate;} public date getgmtmodified () {return gmtmodified;} public void setgmtmodified (date gmtmodified) {this.gmtmodified = gmtmodified;}}2. Définition de l'interface:
Interface publique UserDao {@Insert ("INSERT INTO T_USER (GMT_CREATE, GMT_MODIFIED, USER_NAME) VALEURS (NOW (), NOW (), # {username})") public int insert (@param ("userName") String username); @Select ("select * from t_user où id = # {id}") public userDo selectByUserrid (@param ("id") long id); @update ("update t_user set gmt_modified = now (), user_name = # {username} où id = # {id}") public int udpatebyid (@Param ("username") usAnDame, int udpateByid (@Param ("Ussername") USAM @Param ("id") long id); @delete ("supprimer de t_user où id = # {id}") public int udpatebyid (@param ("id") long id); }3. MyBatis XML Config:
<! - MyBatis Annotation -> <bean id = "sqlSessionFactory"> <propriété name = "dataSource" ref = "mysqlbase" /> <! - Ici, vous n'avez besoin que de configurer votre propre source de données -> </Ean> <bean id = "userdao"> <propriété name = "maketerface" value = "Com.yuanMeng.Usger interface -> <propriété name = "sqlSessionFactory" ref = "SqlSessionFactory" /> <! - SqlSession Factory -> </ bean>
De cette façon, nous terminons la démo de Mybatis en utilisant des annotations. Cela ne semble-t-il pas très simple?
Si vous connaissez MyBatis XML, dans la plupart des cas, nous devons cartographier les noms de champ des tables de base de données à la classe. MyBatis Annotation fournit également des fonctions de cartographie et la syntaxe est similaire.
@Select ("SELECT * FROM TSP_TEMPLAT WHERE ID = # {id}") @ Results (Value = {@Result (propriété = "userName", Column = "user_name", javatype = string.class, jdbcType = jdbcType.varchar)}) public userDo SELECTBYID (@param ("id") Long Id);Bien sûr, ce qui précède est juste que SQL ne peut plus être simple. Pensez-y si nous avons cette exigence, nous mettons à jour les informations de l'utilisateur et espérons mettre à jour la valeur d'attribut spécifiée. En d'autres termes, nous générons SQL dynamiquement comme XML. Ensuite, nous ne pouvons pas simplement et grossièrement utiliser l'annotation @update. Heureusement, le puissant MyBatis fournit également un assemblage SQL dynamique.
SQL dynamique
La relation correspondante est la suivante
@Insert: @insertprovider
@Select: @SelectProvider
@Update: @updateprovider
@Delete: @deleteprovider
Les quatre identificateurs d'annotation du fournisseur utilisent Dynamic SQL et utilisent le format de syntaxe:
@UpDateProvider (type = userProvider.class, méthode = "updatesql")
Comment construire dynamique SQL
classe publique UserProvider {/ *** udpate * @param userdo userdo * @ return * / public String updatesql (final userdo userdo) {return new sql () {{update ("t_user"); set ("gmt_modified = maintenant ()"); if (userDo.geserName ()! = null) {set ("" user_name = # {nom d'utilisateur} ");} où (" id = # {id}} ");}}. toString ();}}Les points de connaissance mentionnés dans cet article sont relativement basiques. Si vous avez besoin d'avoir une compréhension approfondie, veuillez vous référer au document officiel du site Web ou lire le code source.
Résumer:
1. Comment choisir XML et annotations? Cela varie d'une personne à l'autre. Chacun a ses propres habitudes de codage. XML et les annotations ont leurs propres avantages et inconvénients. Les inconvénients de XML: lorsque les attributs du modèle sont modifiés, il doit être changé de DO à DAO à XML. Ce sera pénible d'y penser ~ XML a également des avantages. La réutilisation des fragments SQL est pratique et la syntaxe est accessible. Contrairement aux annotations, vous devez construire une instruction dynamique et créer une classe. De plus, lorsqu'un segment de SQL est référencé plusieurs places, le code semble redondant. À l'heure actuelle, XML doit être utilisé pour extraire et l'utiliser ensemble. Je me suis plaint de l'annotation mybatis, ne serait-elle pas inutile? Non, Mybatis convient aux scénarios où les attributs du modèle sont souvent modifiés, car il peut être combiné avec la réflexion et la SQL construite dynamiquement (des idées personnelles purement non-sens, devrait être réalisée, et cela sera fait un autre jour). On peut dire que les avantages de l'annotation MyBatis compensent bien les lacunes de XML. Les deux se complètent ~
Ce qui précède est un début rapide des annotations de développement MyBatis introduites par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!