


Notions de base pour démarrer avec mybatis (4) ---- mappage d'entrée et mappage de sortie
Dec 21, 2016 pm 02:31 PMBases de démarrage de Mybatis (4) ----Mappage d'entrée et mappage de sortie 1 : Mappage d'entrée
Spécifiez le type de paramètres d'entrée via ParameterType. Le type peut être un type simple, un hashmap ou un pojo. type d'emballage.
1.1. Transmettre l'objet d'emballage de pojo
1.1.1. Description de l'exigence
Pour compléter la requête complète des informations utilisateur, les conditions de requête qui doivent être transmises peut être complexe (peut inclure des informations sur l'utilisateur, d'autres informations, telles que des produits, des commandes, etc.).
1.1.2. Définir le pojo de type d'emballage
En réponse aux exigences ci-dessus, il est recommandé d'utiliser un pojo de type d'emballage personnalisé et d'envelopper les conditions de requête complexes dans le pojo de type d'emballage.
Classe Pojo Code de classe UserQueryVo qui encapsule les conditions de requête :
1 package com.mybatis.entity ; 2 3 /**4 * 5 * @ClassName : UserQueryVo 6 * @Description : TODO (type de package) 7 * @author warcaft 8 * @date 2015-6-30 00:00:41 AM 9 *10*/11 classe publique UserQueryVo {12 //Here Pack autres conditions de requête 13 //Conditions de requête utilisateur 14 PRivate UserCustom userCustom;15 16 public UserCustom getUserCustom() {17 return userCustom;18 }19 20 public void setUserCustom(UserCustom userCustom) {21 this.userCu stom = userCustom;22 }23 / /D'autres conditions de requête peuvent être empaquetées... 24 25 }
Afficher le code
Code de classe UserCustom
1 package com.mybatis.entity 2 /**3 * 4 * @ClassName : UserCustom 5 * @Description : TODO (classe d'extension de l'utilisateur) 6 * @author warcaft 7 * @date 2015-6-30 00:02:37 AM 8 * 9*/ 10 classe publique UserCustom extends User{11 //Peut étendre les informations utilisateur 12}
Afficher le code
Code de UserMapper.xml
Définir les utilisateurs dans UserMapper.xml Requête d'informations complète (en supposant que les conditions de requête sont complexes, requêtes associées complexes via des requêtes avancées)
1 <!-- Requête de combinaison de types d'emballage simulée 2 #{userCustom.sex} : Supprimez la valeur de genre 3 dans l'objet d'emballage pojo $ {userCustom.username} : supprimez la valeur du nom 4 dans l'objet pojo -->5 <select id="findUserList" ParameterType="com.mybatis.entity.UserQueryVo" 6 resultType="com.mybatis.entity. UserCustom" >7 où sex=#{userCustom.sex} et nom d'utilisateur LIKE '%${userCustom.username}%'8 </select>
Afficher le code
Code du Classe UserMapper.java
1 /**2 * 3 * @ClassName : UserMapper 4 * @Description : TODO (interface de mappage de gestion des utilisateurs) 5 * @author warcaft 6 * @date 2015-6-30 00:14:56 AM 7 * 8*/ 9 interface publique UserMapper {10 // Requête complète des informations utilisateur 11 public List<UserCustom> findUserList(UserQueryVo userQueryVo);12 >
View Code
Code de test unitaire Junit
1 paquet com.mybatis.dao.test ; 2 3 importer java.io.InputStream ; 4 importer java.util.Date ; 5 importer java.util.List ; 6 7 importer org.apache.ibatis.io.Resources ; 8 importer org.apache.ibatis.session.SqlSession; 9 importer org.apache.ibatis.session.SqlSessionFactory;10 importer org.apache.ibatis.session.SqlSessionFactoryBuilder;11 importer org.junit.Before;12 importer org.junit.Test;13 14 importer com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21 private SqlSessionFactory sqlSessionFactory;22 23 // 此方法是在执行findUserByIdTest之前执行24 @Before25 public void setUp() renvoie une exception {26 String resource = "SqlMapConfig.xml";27 // 创建SqlSessionFcatory29 sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);30 }31 32 @Test33 public void testFindUserList() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 //创造查询条件36 UserQueryVo userQueryVo = new UserQueryVo();37 UserCustom userCustom = new UserCustom(); 38 userCustom.setSex("2");39 userCustom.setUsername("小");40 userQueryVo.setUserCustom(userCustom);41 //象42 UserMapper mapper = sqlSession.getMapper(UserMapper .class);43 List<UserCustom>list=mapper.findUserList(userQueryVo);44 System.out.println(list);45 sqlSession.commit();46 sqlSession.close();47 }48 }
View Code二:输出映射
1.resultType
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。
只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
1.1.输出简单类型
需求:用户信息的综合查询列表,通过查询总数才能实现分页功能。'
UserMapper.xml的代码
1 <?xml version="1.0" encodage="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离 6 :使用mapper代理开发时,namespace有特殊作用,namespace等于mapper接口地址 7 --> 8 <!-- 用户信息综合查询总数 9 parameterType:指定输入类型,et findUserList一致。10 resultType:输出结果类型. 11 -->12 <mapper namespace="com.mybatis.mapper.UserMapper">13 <select id="findUserCount" ParameterType="com.mybatis.entity.UserQueryVo" resultType="int">14 sélectionnez count(*) depuis t_user où sex=#{userCustom.sex} et un nom d'utilisateur comme '%${userCustom.username}%'15 </select>16 </mapper>
UserMapper.java的代码
1 interface publique UserMapper {2 //用户信息综合查询总数3 public int findUserCount(UserQueryVo userQueryVo);4 }
Junit测试代码
1 paquet com.mybatis.dao.test ; 2 3 importer java.io.InputStream ; 4 importer java.util.Date ; 5 importer java.util.List ; 6 7 importer org.apache.ibatis.io.Resources ; 8 importer org.apache.ibatis.session.SqlSession; 9 importer org.apache.ibatis.session.SqlSessionFactory;10 importer org.apache.ibatis.session.SqlSessionFactoryBuilder;11 importer org.junit.Before;12 importer org.junit.Test;13 14 importer com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21 private SqlSessionFactory sqlSessionFactory;22 23 // 此方法是在执行findUserByIdTest之前执行24 @Before25 public void setUp() renvoie une exception {26 String resource = "SqlMapConfig.xml";27 // 创建SqlSessionFcatory29 sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);30 }31 32 @Test33 public void findUserCountTest() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 //创造查询条件36 UserQueryVo userQueryVo = new UserQueryVo();37 UserCustom userCustom = new UserCustom(); 38 userCustom.setSex("2");39 userCustom.setUsername("小");40 userQueryVo.setUserCustom(userCustom);41 //象42 UserMapper mapper = sqlSession.getMapper(UserMapper .class);43 int count=mapper.findUserCount(userQueryVo);44 System.out.println(count);45 sqlSession.commit();46 sqlSession.close();47 }48 >
Afficher le code
小结:查询出来的结果集只有一行一列,可以使用简单类型进行输出映射。
1.2.输出po jo对象和pojo列表
不管是输出的pojo单个对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的。
在mapper.java指定的方法返回值类型不一样。
1.2. 1.输出单个pojo对象,方法返回值是单个对象类型
1 interface publique UserMapper {2 /**Interroger les informations utilisateur en fonction de l'ID*/3 public User findUserById(int id);4 }
1.2.2.输出pojo对象list,方法返回值是List<pojo>
1 interface publique UserMapper {2 /**Requête floue des informations utilisateur basée sur le nom d'utilisateur*/3 public List<User> findUserByName(String username);4 antecedents Un(返回单个对象调用)还是selectList(返回集合对象调用)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http ://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- espace de noms d'espace de noms, sa fonction est de classer SQL, compris comme isolement SQL 6 Remarque : utiliser le développement d'agent de mappage Quand, l'espace de noms a un rôle spécial, l'espace de noms est égal à l'adresse de l'interface du mappeur 7 ---> 8 <!-- Nombre total de requêtes complètes d'informations utilisateur 9 ParamètreType : spécifie le type d'entrée, cohérent avec findUserList. 10 resultType : type de résultat de sortie. 11 -->12 <mapper namespace="com.mybatis.mapper.UserMapper">13 <!-- Définir resultMap 14 sélectionnez l'identifiant id_, le nom d'utilisateur username_ de t_user et la classe User. l'attribut est utilisé comme relation de mappage 15 type : le type d'objet Java finalement mappé par resultMap, vous pouvez utiliser un alias 16 id : l'identification unique de resultMap 17 -->18 <resultMap type="user" id=" userResultMap"> 19 <!--id représente l'identifiant unique dans le résultat de la requête, 20 colonne : le nom de la colonne interrogée 21 propriété : le nom de l'attribut dans le type pojo spécifié par le type 22 Enfin, resultMap établit une relation de mappage (correspondance relation) entre la colonne et la propriété 23 Le nom de l'attribut dans le type de pojo spécifié 28 Le résultat finalM ap établit une relation de mappage (correspondance) entre la colonne et la propriété 29 -->30 <result column="username_" property="username" />31 </resultMap> ;32 </mapper>
(3) Utilisez resultMap comme mappage de type de sortie de l'instruction
<.>1 <!-- Utiliser resultMap comme mappage de sortie 2 resultMap : Spécifiez l'identifiant du resultMap défini. Si ce resultMap se trouve dans un autre fichier mapper.xml, vous devez ajouter l'espace de noms 3 devant -->4 < ;select id="findUserByIdResultMap" ParameterType="int " resultMap="userResultMap" >5 sélectionnez l'identifiant id_, le nom d'utilisateur username_ de t_user où id=#{id}6 </select>Résumé :
Ce qui précède présente les bases pour démarrer avec mybatis (4) - le contenu du mappage d'entrée et du mappage de sortie. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

iBatis vs MyBatis : lequel vous convient le mieux ?

Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis

Différentes manières de mettre en œuvre des opérations de suppression par lots dans MyBatis

Analyse comparative des fonctions et performances de JPA et MyBatis

Explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis

Explication détaillée du cache de premier niveau MyBatis : Comment améliorer l'efficacité de l'accès aux données ?

Interprétation des paramètres de configuration de MyBatis Generator et bonnes pratiques

Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau
