MyBatis est un cadre de persistance Java qui associe des objets à des procédures stockées ou des instructions SQL via des descripteurs XML ou des annotations.
MyBatis est un logiciel gratuit distribué sous Apache License 2.0 et est une version de branche d'Ibatis 3.0. Son équipe de maintenance comprend également des membres de la startup Ibatis.
Contrairement à d'autres frameworks de mappage d'objets-relation, MyBatis n'associe pas les objets Java aux tables de base de données, mais plutôt les méthodes Java aux instructions SQL. MyBatis permet aux utilisateurs de tirer pleinement parti de diverses fonctions de base de données, telles que des procédures stockées, des vues, diverses requêtes complexes et les caractéristiques propriétaires d'une base de données. Si vous souhaitez opérer sur des bases de données héritées, des bases de données irrégulières ou avoir un contrôle complet sur l'exécution de SQL, MyBatis est un bon choix.
Par rapport à JDBC, MyBatis simplifie le code pertinent: Les instructions SQL peuvent être exécutées dans une ligne de code. MyBatis fournit un moteur de mappage qui mappe de manière déclarative les résultats d'exécution des instructions SQL avec l'arborescence d'objets. Les instructions SQL peuvent être générées dynamiquement en utilisant un langage d'expression de type XML intégré ou à l'aide de plug-ins intégrés par la vitesse d'Apache.
MyBatis s'intègre à Spring Framework et Google Guice, qui sauve les développeurs des problèmes de dépendance.
MyBatis prend en charge la mise en cache de données déclaratives. Lorsqu'une instruction SQL est marquée comme "cacheable", toutes les données obtenues à partir de la base de données lors de sa première exécution seront stockées dans un cache. Lorsque cette instruction est exécutée à l'avenir, le résultat sera lu à partir du cache au lieu de frapper à nouveau la base de données. MyBatis fournit une implémentation de cache basée sur Java Hashmap par défaut, ainsi qu'un connecteur par défaut pour les connexions avec Oscache, ehcache, hazelcast et memcached. MyBatis fournit également une API pour d'autres implémentations de cache.
Points importants
Après avoir appris pendant cette période, le processus principal pour Mybatis ne peut pas être les étapes suivantes
1. Obtenez le SessionFactory à partir du fichier de configuration XML, puis générez la session correspondante à partir du SessionFactory.
2. Utilisez l'objet de session pour terminer les opérations CRUD correspondantes (addition, suppression, modification et requête) et contrôle des transactions correspondant sur les données commerciales.
3. Fermez la session correspondante après utilisation pour éviter une consommation excessive de ressources
4. Utilisez le fichier MAPTER XML correspondant pour configurer l'opération de carte correspondante entre le Javabean de l'entité commerciale et la table de base de données.
Préparations d'avant-guerre:
1. Environnement de développement Eclipse Javaee IDE, JDK 1.6, base de données MySQL 5.5
2. Téléchargez le package JAR correspondant pour une utilisation ultérieure
Mybatis-3.2.3.zip Après décompression, retirez MyBatis-3.2.3.jar, => Adresse de téléchargement: http://code.google.com/p/mybatis/ (package Core Mybatis)
MyBatis-Generator-Core-1.3.1.jar => Adresse de téléchargement: http://code.google.com/p/mybatis/wiki/Generator (Mybatis génère automatiquement le package de fichiers de configuration)
MySQL-Connector-Java-5.1.26-Bin.jar => Adresse de téléchargement: http://dev.mysql.com/downloads/connector/j/ (package de pilote JDBC de MySQL)
Étapes de construction
Ensuite, vous pouvez créer un projet Java appelé Mybatisdemo sous Eclipse, et créer la structure et la structure du dossier du package correspondantes comme indiqué dans la figure ci-dessous, où la configuration et le mapper sont respectivement des dossiers.
Le programme de Demo Runner correspondant et les objets Javabean sont stockés dans le cadre du package David.mybatis.demo et le package David.mybatis.model, et les packages de jar tiers qui viennent d'être téléchargés sont stockés dans le dossier lib.
Après avoir créé le répertoire suivant, nous pouvons ajouter le package JAR correspondant comme indiqué dans la figure ci-dessous
Une fois terminé, exécutez le SQL suivant pour établir la structure du tableau requise pour la démo, y compris 3 tables, les visiteurs (table des visiteurs), le site Web (table du site Web) et le canal (table de canal)
/ * Créer Visitor * / Créer un visiteur de table (ID INT (11) Not Null Auto_inCment, Nom Varchar (1000) Not Null, Email Varchar (1000) Not Null, Status int Not Null Null 1, CreateTime DateTime, Clé primaire (ID)) / * Créer un site Web Table Status int not null default 1, createTime DateTime) / * Create Channel Table * / Create Table Channel (id int Not Null Primary Key Auto_increment, Name varchar (1000) Not Null, Webs Int références site Web (ID), status int not null default 1, CreateTime DateTime)
Une fois tout cela fait, nous commencerons à le faire ~
Comme mentionné au début, toutes les configurations MyBatis proviennent d'un fichier de configuration XML. Nous devons créer un nouveau fichier de configuration nommé MYBATIS_DEMO_CONFIG.xml dans le dossier de configuration. Cette chose est l'une des opérations de base dont nous devons opérer plus tard.
Lors de la configuration de ce fichier, vous devez prêter attention aux éléments du nœud <Fonction> qui ont des exigences de commande hiérarchique et ne peuvent pas être modifiés à volonté. Sinon, une exception se produira lors du chargement du fichier de configuration XML, entraînant des opérations ultérieures infructueuses.
Pour des descriptions de nœuds spécifiques, vous pouvez vérifier http://mybatis.github.io/mybatis-3/zh/configuration.html#. Ici, nous ne parlons que des nœuds, des typalias, des environnements, des mappeurs les plus couramment utilisés.
1. TYPEALIASES => nœud d'alias. Vous pouvez définir les propriétés de ce nœud afin que cet alias soit utilisé à la place d'un nom entièrement qualifié dans le fichier de configuration.
Par exemple <tycias type = "david.mybatis.model.visitor" alias = "visitor" />
2. Environments => Nœud d'environnement, configurer les informations liées aux connexions de données
3. MAPPERS => Configurer les instructions de mappage SQL.
La configuration la plus simple est la suivante:
<? xml version = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typalases> <typalias Type = "david.mybatis.model.visitor" alias = "Visitor" /> </ typealiases> <environnements default = "Development"> <Environment Id = "Develop ? useunicode = true & caractéristique = utf8 pour prendre en charge l'insertion chinoise -> <propriété name = "url" value = "jdbc: mysql: //127.0.0.1: 3306 / mybatis_db? useunicode = true & caractéristique = utf8" /> <propriété name = "username" value = "root" /> <wseway "" " Value = "123456" /> </ DataSource> </ Environment> </ Environments> <Mappers> <Mapper Resource = "Mapper / VisitorMapper.xml" /> </mappers> </FIGIGURATION>
Créez une nouvelle classe appelée Mybatisutils sous le package David.Mybatis.demo, qui stocke les méthodes pour obtenir SQLSession et Fermer SQLSession, qui sont extraites pour faciliter la réutilisation multiple.
package david.mybatis.demo; import java.io.inputStream; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import org.apache.ibatis.session.sqlsessionfactorybuilder; david.mybatis.model.crud_enum; classe publique MyBatisUtils {private static final string config_path = "config / mybatis_demo_config.xml"; / * * Obtenez le lien d'accès à la base de données * / public static sqlSession getSQLSession () {sqlSession session = null; try {inputStream stream = Resources.getResourceSStream (config_path); // L'environnement de base de données correspondant peut être lu en fonction de l'environnement correspondant configuré // SQLSessionFactory Factory = new SQLSessionFactoryBuilder (). Build (// Stream, "Development"); SqlSessionFactory Factory = new SqlSessionFactoryBuilder () .Build (Stream); session = factory.opencession (); } catch (exception e) {// todo: gère l'exception e.printStackTrace (); } return session; } / * * Obtenez le lien d'accès à la base de données * / public static void closesion (SQLSession Session) {session.close (); } / * * Return Operation Record Message * / public static void showMessages (CRUD_ENUM Type, int count) {switch (type) {case add: System.out.println ("ajouté" + count + "enregistrement."); casser; Case Delete: System.out.println ("supprimé" + Count + "Records."); casser; Case Update: System.out.println ("Mise à jour" + Count + "Records."); casser; Case Query: System.out.println ("Matted" + Count + "Records."); casser; Liste de cas: System.out.println ("Total" + Count + "Records."); casser; par défaut: pause; }}}Créez une nouvelle classe nommée Visitor sous le package David.Mybatis.Model pour l'utiliser comme correspondant ou mappage.
package david.mybatis.model; importer java.text.simpledateFormat; import java.util.date; Visiteur de classe publique {private int id; nom de chaîne privé; e-mail de chaîne privée; Statut int privé; Date privée CreateTime; Public Visitor () {// TODO Stume de constructeur généré automatique CreateTime = new Date (); } Visiteur public (nom de chaîne, courriel de chaîne) {this.name = name; this.email = e-mail; this.status = 1; this.CreateTime = new Date (); } public int getID () {return id; } public void setName (string name) {this.name = name; } public String getName () {Nom de retour; } public void setEmail (chaîne e-mail) {this.email = e-mail; } public String getEmail () {return e-mail; } public Date getcreatetime () {return CreateTime; } @Override public String toString () {// TODO Méthode générée automatique Stume de retour string.format ("{id:% d, name:% s, CreateTime:% s}", id, nom, new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"). Format (createtime)); }}Créez un nouveau VisitorMapper.xml sous le package david.mybatis.demo pour cartographier l'instruction SQL correspondante.
Ici, vous devez noter que l'espace de noms => david.mybatis.demo.ivisitoroperation doit être associé au nom de fichier réel sous le package correspondant. Sinon, le fichier de mappage correspondant ne peut pas être chargé avec succès.
<mapper namespace = "david.mybatis.demo.ivisitoroperation"> <select id = "BasicQuery" ParameterType = "int" resultType = "Visitor"> SELECT * FROM Visitor où id = # {id} et status> 0 Order by Id </ select> </papper> Exécutez ensuite le programme suivant
public static void testBasicQuery (int id) {SqlSession Session = mybatisUtils.getsqlSession (); Try {Visitor Visitor = (Visitor) Session.Selectone ("David.Mybatis.demo.ivisitorOperation.basicQuery", id); Mybatisutils.closesession (session); System.out.println (visiteur); } catch (exception e) {// todo: gère l'exception}} Le résultat d'exécution le plus simple est sorti
C'est le Helloword de la série Mybatis ~