1. Interface getMapper ()
Analyse: GetMapper () Interface idept.class définit une interface,
Montage d'une méthode qui n'est pas implémentée. En termes spéciaux, toute méthode qui emprunte le bâtiment doit être cohérente avec l'attribut ID dans la petite configuration.
Grâce à Proxy: Générez le nom de la classe d'implémentation de l'interface, maintenez le nom $$ DEPT_ABC, selectDeptBYNO () dans le MyBatis sous-jacent
Cela équivaut à un type fort
Par exemple
Étape 1: Définissez une interface dans cn.happy.dao
package cn.happy.dao; import java.util.list; import cn.happy.entity.dept; interface publique ideptdao {// voir tout ------------ getAllDept devrait être le même que l'ID dans la petite configuration publique <ftpt> getAllDept ();}; Étape 2: Configuration idepte.xml petite configuration
Analyse: L'attribut ID dans SELECT doit être le même que le nom de la méthode d'interface dans l'interface; Le nom du package d'attribut d'espace de noms de mappeur est l'interface cn.happy.dao.ideptdao
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappepublic "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.happy.dao.ideptdao"> <select id = "getAlldept" resultType = "cn.happy.entity.dept"> SELECT * FROM DEPT </ELECT> </MAPPER>
Étape 3: Classe de test
Analyse: il existe deux façons de voir toutes les informations
1) Session.SelectList ("Cn.happy.dao.ideptdao.getalldept"); -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2) ideptdao mappeur = session.getMapper (ideptdao.class); équivaut à la classe d'implémentation, GetMapper est un type fort
// 01VIEW TOUTES les informations getMapper () Le nom de la méthode de la classe d'interface doit être le même que l'ID de la petite configuration @TestPublic void testSelectall () {SqlSession Session = Factory.OpenSession (); // Utiliser un type faible ======== Classe d'entité. Le nom d'identification dans la petite configuration ============ String / * List <Dpt> list = session.selectList ("Cn.happy.dao.ideptdao.getalldept"); for (Dept Dept: List) {System.out.println (Dept.getDeptName ());} * /// use Getmapper Method pour la méthode Hibernat pour Us Class in Memory =============== Équivalent à Strong Type // Mapper est un objet de classe d'implémentation ideptdao mappeur = session.getMapper (ideptdao.class); list <ftt> list = mapper.getallDept (); pour (Dept Dept: List) {System.out.println (dept.getDeptName ());} Étape 4: Utilisez une grande configuration dans l'ensemble du texte
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype ConfigurationPublic "- // Mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> <! Configuration à l'alias -> <typealiases> <tycias type = "cn.resultmap.enetity.emp" alias = "emp" /> </ typealiases> <environnements default = "Development"> <environnement id = "Development"> <transactionManager type = "JDBC" /> <dataSource Type = "Polated"> <propriété nom = "Driver" Value = "oracle.jdbc.oracledriver" /> <propriété name = "url" value = "jdbc: oracle: mince: @localhost: 1521: ORCL" /> <propriété name = "username" value = "sa" /> <propriété name = "mot de passe" value = "1" / fichier matelaire: décrivant la correspondance entre un an et une table de base de données -> <mappers> <mapper ressource = "cn / resultmap / esetity / emp.xml" /> </mappers> </figfingure>
2. Tag de résultat
Analyse: Le scénario utilisé est que lorsque les propriétés de la classe d'entité ne correspondent pas à la base de données, les propriétés de la classe d'entité et de la base de données doivent être cohérentes. (J'ai déjà utilisé des cours d'entité)
Par exemple, recherche tous les employés et les services affiliés
Étape 1: Créez une interface
Package Cn.resultMap.dao; Importer java.util.list; Importer cn.resultmap.enetity.emp; Interface publique iEMPDAO {// Récupère tous les employés et départements affiliés Liste publique <Emp> getAlemps ();} Étape 2: Configurez les propriétés de la petite configuration
Analyse: Pour une partie avec une grande perspective des employés, veuillez utiliser l'association pour intégrer chaque attribut d'une partie. (Si l'association est supprimée, c'est le résultat de base)
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappepublic "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.resultmap.dao.iempdao"> <resultmap type = "cn.resultmap.enetity.emp" id = "empmap"> <id Property = "empid" column = "Empid" /> <result Property = "empname" chronny = "Empname" pour chaque propriété = "Empcity" Grande perspective des employés, veuillez utiliser l'association -> <association propriété = "Dept" javatype = "cn.resultmap.enetity.dept"> <résultat propriété = "deptName" chronn = "deptname" /> <résultat propriété = "deptno" column = "DeptNo" /> </ association> </ resultMap> <Select Id = "GetAlemps" ResultMap = "Empmap" E
Étape 3: Classe de test
// ResultMap: le nom d'attribut de l'entité et le nom de champ de la table sont garantis pour être cohérents avec resultMap // Si vous signalez Nullexception, voyez si l'association de mappage de la petite configuration est configurée. ResultMap est configuré @TestPublic void TestAllEmp () {SqlSession Session = Factory.OpenSession (); iEMPDAO MAPTER = SESSSION.GetMapper (iEMPDAO.class); List <emp> allemps = mappper.getallemps (); for (emp emp: allemps) {System.out.println (emp.getEmpName () + "/ t Department Affiliate" + emp.getDept (). getDeptName ());} session.close ();} Étape 4: introduire de petites configurations dans de grandes configurations
3. Extraire les colonnes SQL
Analyse: la balise SQL simplifie le volume de code en petite configuration
<! - Utilisation de balises SQL -> <sql id = "colonnes"> d.deptno, d.deptname </ql> <! - Utilisation de balises SQL -> <select id = "getallemps" resultMap = "empmap"> SELECT E.
4. Alias Alias
Analyse: Écrivez sur de grandes configurations, afin que les alias puissent être référencés dans de petites configurations
<! - Modifiez la valeur d'attribut du type dans la configuration d'alias d'alias en alias -> <typealiases> <typealias type = "cn.resultmap.enetity.emp" alias = "emp" /> </ typealiases>
5. Fonctionnement dynamique
Analyse: Les principaux éléments utilisés pour implémenter SQL dynamiques sont:
Si le choix (quand, sinon) où
Par exemple, voir les gens à Pékin City
Étape 1: interface
Package Cn.resultMap.dao; Importer java.util.list; Importer cn.resultmap.enetity.emp; Interface publique iEMPDAO {// Récupère tous les employés et départements affiliés Liste publique <Emp> getAlemps ();}Étape 2: petite version = "1.0" Encoding = "UTF-8"?>
<! Doctype mappepublic "- // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <masper namespace = "cn.resultmap.dao.iempdao"> <résultatmap type = "cn.resultmap.enetity.emp" id = "empmap"> <id property = "empid" chronn = "empid" /> <résultat propriété = "empname" chronn = "empname" /> <résultat propriété = "empcity" column = "empcity" /> <! javatype = "cn.resultmap.enetity.dept"> <résultat propriété = "deptName" chronn = "deptName" /> <résultat propriété = "Deptno" chronn = "deptNo" /> </ résultat e.deptno = d.deptno </lect> <! - Query Dynamic Query -> <select id = "TestAllempBuselelect" ParameterType = "cn.resultmap.enetity.emp" resultType = "cn.resultmap.enetity.emp" test = "empid! = null"> et empid = # {empid} </ if> <if test = "empname! = null"> et empname = # {empcName} </ if> <if test = "empcity! = null"> et empcity = # {empcity} </f> </ where> </lect> </pcity> Étape 3: Tester
// Dynamic Query @TestPublic void TestSelect () {SqlSession Session = Factory.OpenSession (); Emp Emp = new Emp (); // Emp.SetEmpName ("331"); emp.SetEmpCity ("sh"); list <emp> list = session.selectList ("cn.resultmap.dao.iempdao.testallempbuselelect", emp); for (emplps: list) {System.out.println (emps.getempname ());} session.close ();} Étape 4: introduire de petites configurations dans de grandes configurations
Par exemple, modifier les informations du département
Étape 1: interface
Étape 2: petite configuration
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappepublic "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.resultmap.dao.ideptdao"> <resultmap type = "cn.happy.entity.dept" id = "deptresultmap"> <id Property = "Deptno" Column = "DeptNo" /> <result Property = "DeptName" Column = "DeptName" /> </cultMap> ResultMap = "DeptresultMap"> SELECT D Dept <Set> <if test = "Deptno! = null"> Deptno = # {deptno}, </ if> <if test = "DeptName! = null"> DeptName = # {deptName} </sectem> </ set> où DeptNo = # {deptNo} </ELECT> </ set> Étape 3: Tester
/ *** Modification dynamique * * / @ TestPublic void TestupDate () {SqlSession Session = Factory.OpenSession (); Dept Dept = new Dept (); Dept.SetDeptDame ("Financial Department"); Dept.SetDeptNo (1); int count) session.update ("cn.resultmap.dao.ideptdao.testupdate", dept); session.commit (); system.out.println (count); session.close ();}Ce qui précède est une explication détaillée de l'interface GetMapper () de MyBatis, de la balise ResultMap, de l'alias d'alias, essayez d'extraire les colonnes SQL et des opérations dynamiques. 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!