Tutoriel d'apprentissage d'introduction par ArticlemyBatis précédent (I) - Dans le démarrage rapide MyBatis, nous avons expliqué comment utiliser MyBatis pour interroger les données de la table des utilisateurs, qui est une introduction préliminaire à Mybatis. Aujourd'hui, nous expliquerons comment utiliser MyBatis pour effectuer des opérations CRUD sur la table des utilisateurs. Avant d'aller sur le sujet, j'ajouterai des connaissances de base sur Mybatis et Crud.
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 recherchez des ensembles de résultats. MyBatis peut utiliser des XML ou des annotations simples pour la configuration et le mappage d'origine pour mapper les interfaces et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
Téléchargement MyBatis: https://github.com/mybatis/mybatis-3/releases
Crud signifie
Crud fait référence à l'abréviation des premières lettres de plusieurs mots lors de la réalisation du traitement du calcul. Il est principalement utilisé pour décrire les fonctions opérationnelles de base de la base de données ou de la couche de persistance dans les systèmes logiciels.
En allant au point, l'environnement de test utilisé dans cet article est l'environnement de test dans l'article précédent.
1. Utilisez MyBatis pour effectuer des opérations CRUD sur les tables - implémentation basée sur XML
1. Définir le fichier XML de mappage SQL
Le contenu du fichier userMapper.xml est le suivant:
<? xml version = "." Encoding = "UTF-"?> <! Doctype Mappeur public "- // mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis-mapper.dtd"><!-- Spécifiez un espace de noms unique pour ce mapper. La valeur de l'espace de noms est conventionnellement définie sur le nom du package + nom de fichier de carte SQL, de sorte que la valeur de l'espace de noms peut être garantie unique. For example, namespace="me.gacl.mapping.userMapper" is me.gacl.mapping (package name) + userMapper (userMapper.xml file removal suffix)--><mapper namespace="me.gacl.mapping.userMapper"><!-- Write a query SQL statement in the select tag, set the id attribute of the select tag to getUser, the id attribute value must be unique, and the L'attribut de paramètre ne peut pas être réutilisé pour indiquer le type de paramètre utilisé dans la requête. L'attribut ResultType indique le type de jeu de résultats renvoyé par le requête resultType = "me.gacl.domain.User" signifie encapsulant le résultat de la requête dans un objet de la classe utilisateur Retour à la classe utilisateur, qui est la classe d'entité correspondant à la table des utilisateurs -> <! - Obtenez un objet utilisateur en fonction de l'ID Query -> <Select id = "GetUser" ParametType = "INT" resultType = "me.gacl.domain.user"> Sélectionner * chez les utilisateurs où id = # {id} </lect> <! - Créer un utilisateur (create) -> <insert id = "addUser" ParameterType = "me.gacl.domain.user"> Insérer dans les utilisateurs (nom, âge) Valeurs (# {nom), # {Age}) </sersert> <! -> <delete id = "DeleteUser" ParameterType = "int"> Delete des utilisateurs où id = # {id} </preete> <! - Modifier l'utilisateur (mise à jour) -> <update id = "UpdateSer" ParameterType = "me.gacl.domain.user"> Update Users Set name = # {name}, age = # {Age {~} where id = # {id} </ update> <! Recherchez tous les utilisateurs -> <select id = "getAlUsers" resultType = "me.gacl.domain.user"> SELECT * dans les utilisateurs </lect> </ mapper> Le code de classe de test unitaire est le suivant:
Package me.gacl.test; importer java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; import org.apache.ibatis.session.sqlSession; import org.junit.test; classe publique testcrudbyxmapper {@Testpubl Void Testiddd () {// sqlpper sqlSession = mybatisUtil.getsqlSession (false); sqlSession sqlSession = mybatisUtil.getsqlSession (true); / *** map SQL Identification String, * me.gacl.mapping.UserMapper est la valeur de l'attribut d'identité INSERMPERT. Via la valeur d'attribut id de la balise d'insertion, vous pouvez trouver le SQL à exécuter * / string statement = "me.gacl.mapping.userperther.adduser"; // map SQL Identification String user = user (); user.setname ("User Lonely and CanGlang"); user.setage (); // effectuer l'insertion INT RetResult = sqlSession.insert (instruction, utilisateur); // soumettre manuellement les transactions // sqlSession.Commit (); // Après avoir exécuté SQL avec SQLSession, vous devez fermer SQLSESSIONSQLSESSION.CLOSE (); System.out.println (retReResult);} @ TestPublic void TESTUPDATE () {SqlSession SqlSession = MyBatisUtil.getsqlSession (true); / *** Map SQL Identification String, * me.gacl.mapping.UserMapper est la valeur de l'attribut de names de l'attribut de nom de Names. Valeur de la balise de mise à jour. Le SQL à exécuter peut être trouvé via la valeur d'attribut ID de la balise de mise à jour. * / String instruction = "me.gacl.mapping.usermapper.updateUser"; // mapping sql id String user = user = user (); user.setid (); user.setName ("Lonely CIGGLANG"); user.Setage (); // exécuter l'opération de modification Int RetReSult = SQLSESSE.Update, statut, user); // après l'exécution de SQLSSESSE. Pour fermer sqlSession.close (); System.out.println (retReSult);} @ testPublic void TestDelete () {SqlSession SqlSession = MybatisUtil.getsqlSession (true); / *** Map Sql Identification String, * me.gacl.Mapping.Usermapper est la valeur de la valeur de l'espace de nom Fichier userMapper.xml, * DeleteUser est la valeur d'attribut ID de la balise de suppression. Le SQL à exécuter peut être trouvé via la valeur d'attribut ID de la balise de suppression * / string instruction = "me.gacl.mapping.usermapper.deleteUser"; // map sql identification String // Exécuter l'opération delete int retReSult = SQLSession.Delete (instruction,); // après exécuter SQL avec SQLSession, vous avez besoin de fermer pour fermer pour fermer la ferme SqlSessionsQlSession.Close (); System.out.println (retReSult);} @ TestPublic void testGetTall () {SqlSession SqlSession = MyBatisUtil.getsqlSession (); / *** Map Sql Identification String, * me.gacl.Mapping. Fichier userMapper.xml, * GetAlUsers est la valeur d'attribut ID de la balise de sélection. Grâce à la valeur d'attribut d'ID de la balise de sélection, vous pouvez trouver que la déclaration SQL est exécutée * / string à exécuter = "me.gacl.mapping.userperpapper.getallusers"; // mappant la SQL Identity String // Exécuter des opérations de requête, et encapsule automatiquement les résultats de la requête dans la liste <utilisateur>; SQLSession Exécuter SQL, vous devez fermer SQLSESIONSQLSESSION.Close (); System.out.println (lstusrs);}} 2. Utilisez MyBatis pour effectuer des opérations CRUD sur les tableaux - implémentation basée sur l'annotation
1. Définissez l'interface pour la cartographie SQL
Le code de l'interface Usermapperi est le suivant:
package me.gacl.mapping; import java.util.list; import me.gacl.domain.user; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.select; import org.apache.ibatis.annotations.update; Définissez l'interface pour le mappage SQL, spécifiez que le SQL est exécuté à l'aide d'annotations * / interface publique UserMappemi {// Utilisez les annotations @insert pour indiquer les valeurs SQL (# {name}, #}) ") SQL à exécuter par la méthode DeleteById @ delete ("Delete des utilisateurs où id = # {id}") public int DeleteById (int id); // utilisez l'annotation @update pour spécifier le SQL à exécuter par la méthode de mise à jour @ update ("Update Users Set Name = # {name}, Age = # {Age} où id = # # {id}") public int (user) @Select Annotation pour spécifier le SQL à exécuter par la méthode GetbyId @ SELECT * dans les utilisateurs où id = # {id} ") utilisateur public getbyid (int id); // utilise l'annotation @Select pour spécifier la liste publique SQL à exécuter par la méthode getall @ select (" SELECT * parmi les utilisateurs ") Liste publique <User> GetAll ();} Il convient de noter que nous n'avons pas besoin d'écrire du code de classe d'implémentation spécifique pour l'interface UserMappermi. Cette classe d'implémentation spécifique est construite dynamiquement par MyBatis, et nous n'avons qu'à l'utiliser directement.
2. Enregistrez cette interface de mappage dans le fichier conf.xml
<? xml version = "." Encoding = "UTF -"?> <! Doctype Configuration public "- // mybatis.org//dtd Config .//en" "http://mybatis.org/dtd/mybatis --config.dtd"><configuration><environments default =" Development "> <vironter id =" développement "> /> <! - Configurer les informations de connexion de la base de données -> <dataSource type = "poolled"> <propriété name = "driver" value = "com.mysql.jdbc.driver" /> <propriété name = "url" value = "jdbc: mysql: // localhost: / mybatis" /> <propriété name = "username" value = "root" /> <woftway = "Value =" Value = "xdp" /> </ dataSource> </ Environment> </ Environments> <mappers> <! - Enregistrez le fichier userMapper.xml. L'UserMapper.xml est situé dans le package me.gacl.mapping, donc la ressource est écrite comme moi / gacl / mapping / userMapper.xml -> <masper ressource = "me / gacl / mapping / userMapper.xml" /> <! - Enregistrer l'interface de mappage Usermapper -> <makeppers> </ / configuration>
Le code de la classe de test unitaire est le suivant:
Package me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.mapping.usermapperi; import me.gacl.util.mybatisutil; import org.apache.ibatis.ssess.sqlSession; import org.junit.test; TestAdd () {SQLSession SqlSession = MyBatisUtil.getsqlSession (true); // Obtenez l'objet de classe d'implémentation de l'interface UserMapperi. L'objet de classe d'implémentation de l'interface UserMapperi est construit dynamiquement par SQLSession.getMapper (UserMapperI.class). UserMapperi Mapper = sqlSession.getMapper (userMapperI.class); user user = new user (); user.setName ("userXdp"); user.setage (); int add = maapper.add (user); // après avoir utilisé sqlSession pour exécuter sql, vous devez fermer SqlSessionqLSession.Close (); System.out.println (add);} @ testPublic void TesUpDate () {SqlSession SqlSession = MyBatisUtil.getsqlSession (true); // Obtenez l'objet de classe d'implémentation de l'interface Userpermi. L'objet de classe d'implémentation de l'interface UserMapperi est construit dynamiquement par SqlSession.getMapper (userMapperI.class) UserMapperi Mapperi = SQLSession.getMapper (UserMapperI.class); User user = new user (); user.setid (); user.setName ("long lang_xdp"); user.setage (); // exécuter l'opération de modification int redesult = mAper.update (user); // après avoir utilisé sqlSession, vous devez fermer SqlSessionsqSession.Close (); System.out.Println (represult); TestDelete () {sqlSession sqlSession = mybatisUtil.getsqlSession (true); // Obtenez l'objet de classe d'implémentation de l'interface UserMapperi. L'objet de classe d'implémentation de l'interface Userpermi est construit dynamiquement par SqlSession.getMapper (userMapperri.class) UserMapperi Mapper = SqlSession.getMapper (UserMapperi.class); // Exécuter l'opération de suppression int Retrasult = Mappe SqlSessionsqlSession.close (); System.out.println (retResult);} @ testpublic void testGetUser () {sqlSession sqlSession = mybatisUtil.getsqlSession (); // Obtenez l'objet de classe d'implémentation de l'interface Userpermi. L'objet de classe d'implémentation de l'interface UserMappermi est construit dynamiquement par SqlSession.getMapper (userMapperri.class) UserMapperi Mappet = SqlSession.getMapper (UserMapperI.class); // Exécuter les opérations de requête et encapsule automatiquement les résultats de la requête dans l'utilisateur de l'utilisateur = Mapper.getbyid (); // après avoir utilisé SQLSSESSE pour exécuter SQL, vous avez besoin pour vous faire fonctionner SQL, vous avez besoin pour exécuter Sql, vous SqlSessionsqlSession.close (); System.out.println (utilisateur);} @ testpublic void testGetall () {sqlSession sqlSession = MyBatisUtil.getsqlSession (); // Obtenez l'objet de classe d'implémentation de l'interface UserMapperi. L'objet de classe d'implémentation de l'interface UserMapperi est construit dynamiquement par SqlSession.getMapper (userMapperri.class) UserMapperi Mappel = SQLSession.getMapper (UserMapperI.class); // Exécuter le fonctionnement de la requête et encapsape automatique SqlSession, vous devez fermer SqlSessionsqlSession.close (); System.out.println (lstusrs);}} Le code de classe d'outils MyBatisutil utilisé est le suivant:
Package me.gacl.util; import java.io.inputStream; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionfactory; import org.apache.ibatis.session.sqlsessionfactory; Import Org.apache.ibatis.session.sqlsessionfactory; MyBatisUtil {/ *** Get SqlSessionFactory * @return sqlSessionFactory * / public static sqlSessionFactory getSQLSessionFactory () {String Resource = "conf.xml"; EntingStream is = mybatisUtil.class.getClassOader (). SqlSessionFactoryBuilder (). Build (IS); return Factory;} / *** GET SQLSESSES engager la transaction après l'exécution de SQL * FAUX indique que l'objet SQLSession créé n'engagera pas automatiquement la transaction après l'exécution de SQL. À l'heure actuelle, nous devons appeler SqlSession.Commit () manuellement pour soumettre la transaction * @return sqlSession * / public static sqlSession GetSQLSession (Boolean IsautoCommit) {return getSQSessionFactory (). OpenSession (IsautoCommit);}}Tous les codes liés ci-dessus ont été testés et tout le monde peut les utiliser en toute confiance!
Ce qui précède est le tutoriel d'apprentissage MyBatis qui vous est présenté par l'éditeur (II) - comment utiliser MyBatis pour effectuer des opérations CRUD sur la table des utilisateurs. 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!