Le prédécesseur de Mybatis était Ibatis, qui était à l'origine un projet open source d'Apache. En 2010, ce projet a été déplacé de la Fondation du logiciel Apache à Google Code et a été renommé 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 le paramètre manuel de presque tous les code et paramètres JDBC et la récupération des ensembles de résultats. MyBatis utilise des XML ou des annotations simples pour la configuration et la cartographie originale, les interfaces de cartographie et les Pojos de Java (Planifier les anciens objets Java, les objets Java ordinaires) en enregistrements dans la base de données.
L'architecture fonctionnelle de Mybatis est divisée en trois couches (l'image est empruntée à Baidu Encyclopedia):
1) Couche de l'interface de l'API: fournit des API d'interface pour une utilisation externe, à travers laquelle les développeurs manipulent des bases de données. Une fois que la couche d'interface aura reçu la demande d'appel, elle appellera la couche de traitement des données pour terminer le traitement spécifique des données.
2) Couche de traitement des données: responsable de la recherche SQL spécifique, de l'analyse SQL, de l'exécution SQL et du traitement de cartographie des résultats d'exécution, etc. Son objectif principal est de terminer une opération de base de données en fonction de la demande de l'appel.
3) Couche de support de base: responsable de la prise en charge fonctionnelle la plus élémentaire, y compris la gestion des connexions, la gestion des transactions, le chargement de configuration et le traitement du cache. Ce sont toutes des choses courantes, les extraits comme les composants les plus élémentaires. Fournit la prise en charge la plus élémentaire pour la couche supérieure de la couche de traitement des données.
Voici un simple mybatis utilisant la démo.
Structure globale
Dépendance
Deux packages en pot doivent être référencés, l'un est MyBatis et l'autre est MySQL-Connector-Java. S'il s'agit d'un projet Maven, ajoutez des dépendances dans le POM comme suit.
<dependency> <proupId> org.mybatis </rompuprid> <letifactive> mybatis </ artifactId> <version> 3.2.3 </ version> </Dependance> <Dedency> <ProupID> MySQL </proupId> <ErtifactId> Mysql-Connector-Java </RetifActid> <version> 5.1.26 </ version>
Préparation des données
Créez des données ponctuelles dans MySQL pour les tests:
Créer une base de données mybatis_test; Créer un utilisateur de table (entier d'âge non nul, nom varchar (64) pas null default ''); insérer les valeurs utilisateur (18, «zhanjindong»); insérer les valeurs utilisateur (20, «zhangsan»);
Fichier de configuration
Deux types de fichiers de configuration sont requis. L'un est le fichier de configuration MyBatis MyBatis-Config.xml. Dans l'exemple, c'est une configuration très simple. Il existe de nombreuses instructions pour la configuration détaillée sur Internet.
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> <paramètres> name = "cacheenabled" value = "false" /> <setting name = "usegeneratedkeys" value = "true" /> <paraming name = "defaultExecutOrty <transactionManager type = "jdbc" /> <dataSource type = "poolled"> <propriété name = "driver" value = "com.mysql.jdbc.driver" /> <propriété name = "url" value = "jdbc: mysql: //192.168.71.38: 3306 / mybatis_test" /> <woftaméli value = "root" /> <propriété name = "mot de passe" value = "123456" /> </ataSource> </ Environment> </ Environments> <Mappers> <Mappeur Resource = "MAPPERS / USERMPAPPET.xml" /> </mappers> </ Configuration>
Un autre type est le fichier de mappage d'interface d'accès aux données: dans l'exemple, c'est userMapper.xml. Ce fichier peut être trouvé par SRC / Main / Resource ou sous-répertoire MyBatis. Il est spécifié par la ressource du nœud mappers / mappeur dans Mybatis-Config.xml.
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapperpace =" Test.mybatis.> <! " L'espace de noms doit être le chemin d'accès de l'interface UserMapper "-> <insert id =" inserser "ParameterType =" User "> Insérer dans l'utilisateur (nom, âge) (# {name}, # {Age}) <! - Ici, aucun semi-sot Nom de la méthode de l'interface dans l'interface UserMapper -> <select id = "getuser" resultType = "user" ParameterType = "java.lang.string"> sélectionner * à partir de l'utilisateur où name = # {name} </lect> </ mapper> Le fichier de mappage correspondant est l'interface UserMapper sous l'espace de noms test.mybatis, qui définit l'interface uniquement pour accéder au tableau de données:
package test.mybatis; interface publique UserMapper {public void insertUser (utilisateur utilisateur); utilisateur public getuser (nom de chaîne);} Besoin d'un pojo: user.java
package test.mybatis; public class user {private String name; Âge entier privé; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public Integer Getage () {Return Age; } public void Setage (entier Âge) {this.age = age; } utilisateur public (nom de chaîne, âge entier) {super (); this.name = name; this.age = âge; } public user () {super (); }} test
L'opération de la base de données MyBatis utilise une classe appelée SQLSession. Cette classe est générée via SQLSessionFactory. Il est généralement recommandé de maintenir un SQLSessionFactory à l'échelle mondiale.
Testmybatis.java
package test.mybatis; import java.io.ioexception; import java.io.reader; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsessionfactory SQLSessionFactory SQLSessionFactory; statique {string ressource = "mybatis-config.xml"; Lecteur lecteur = null; essayez {Reader = Resources.getResourceAsReader (ressource); } catch (ioException e) {System.out.println (e.getMessage ()); } sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (Reader); } public static sqlSessionFactory getSQLSessionFactory () {return sqlSessionFactory; }}Le code de test est le suivant:
Testmybatis.java
package test.mybatis; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; classe publique TestMyBatis {statique sqlSessionFactory SqlSessionFactory = null; statique {sqlSessionFactory = mybatisUtil.getsqlSessionFactory (); } public static void main (String [] args) {testAdd (); getUser (); } public static void testAdd () {sqlSession sqlSession = sqlSessionFactory.OpenSession (); essayez {userMapper userMapper = sqlSession.getMapper (userMapper.class); Utilisateur utilisateur = nouvel utilisateur ("Lisi", nouvel entier (25)); userMapper.Inserser (utilisateur); sqlSession.Commit (); // Vous devez soumettre ici, sinon les données n'entreront pas la base de données} enfin {sqlSession.close (); }} public static void GetUser () {sqlSession sqlSession = sqlSessionFactory.OpenSession (); essayez {userMapper userMapper = sqlSession.getMapper (userMapper.class); User user = userMapper.getUser ("Zhangsan"); System.out.println ("name:" + user.getName () + "| Age:" + user.getage ()); } enfin {sqlSession.close (); }}} Choses à noter
1. MyBatis utilisera Log4J pour enregistrer les journaux, mais l'activation du mode de débogage semble avoir un impact très fort sur les performances.
2. Le cache de requête de Mybatis a un très grand impact sur les performances, et l'écart entre l'activation et le non-activation est très important.
Remarque: La ligne de cache doit être ajoutée au fichier de mappeur, sinon elle ne prendra pas effet.
Exemple de téléchargement de code: téléchargement de code
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.