Heim  >  Artikel  >  Java  >  Grundlagen für den Einstieg in mybatis (4) ---- Eingabezuordnung und Ausgabezuordnung

Grundlagen für den Einstieg in mybatis (4) ---- Eingabezuordnung und Ausgabezuordnung

黄舟
黄舟Original
2016-12-21 14:31:031253Durchsuche

Mybatis Erste Schritte (4)----Eingabezuordnung und Ausgabezuordnung 1: Eingabezuordnung

Geben Sie den Typ der Eingabeparameter über ParameterType an. Der Typ kann ein einfacher Typ, eine Hashmap oder ein Pojo sein Verpackungsart.

1.1. Übergeben Sie das Verpackungsobjekt von pojo

1.1.1. Anforderungsbeschreibung

Um die umfassende Abfrage der Benutzerinformationen abzuschließen, müssen die Abfragebedingungen übergeben werden kann komplex sein (kann Benutzerinformationen, andere Informationen wie Produkte, Bestellungen usw. umfassen).

1.1.2. Verpackungstyp-Pojo definieren

Als Reaktion auf die oben genannten Anforderungen wird empfohlen, einen benutzerdefinierten Verpackungstyp-Pojo zu verwenden und komplexe Abfragebedingungen in den Verpackungstyp-Pojo einzuschließen.

Pojo-Klasse UserQueryVo-Klassencode, der Abfragebedingungen umschließt:

1 package com.mybatis.entity;**4 * 5 * @ClassName: UserQueryVo 6 * @Description: TODO (Pakettyp) 7 * @author warcaft 8 * @date 2015-6-30 00:00:41 9 *10*/11 public class UserQueryVo {12 //Here Pack andere Abfragebedingungen 13 //Benutzerabfragebedingungen 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 / /Andere Abfragebedingungen können gepackt werden... 24 25 }
Code anzeigen

UserCustom-Klassencode

1 package com.mybatis.entity 2 /**3 * 4 * @ClassName: UserCustom 5 * @Description: TODO (Erweiterungsklasse des Benutzers) 6 * @author warcaft 7 * @date 2015-6-30 00:02:37 8 * 9*/ 10 öffentliche Klasse UserCustom erweitert Benutzer{11 //Kann Benutzerinformationen erweitern 12}
Code anzeigen

Code von UserMapper.xml

Benutzer in UserMapper.xml definieren Umfassende Informationsabfrage (vorausgesetzt, dass Die Abfragebedingungen sind sehr komplexe, komplexe verwandte Abfragen durch erweiterte Abfragen)

1 5
Code anzeigen

Code von die UserMapper.java-Klasse

1 /**2 * 3 * @ClassName: UserMapper 4 * @Description: TODO (Benutzerverwaltungs-Mapper-Schnittstelle) 5 * @author warcaft 6 * @date 2015-6-30 00:14:56 7 * 8*/ 9 öffentliche Schnittstelle UserMapper {10 // Umfassende Abfrage von Benutzerinformationen 11 public List findUserList(UserQueryVo userQueryVo);12 }
Code anzeigen

Junit-Unit-Testcode

1 Bestätigung com.mybatis.dao.test; 2  3 import java.io.InputStream; 4 import java.util.Date; 5 java.util.List importieren; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory;10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;11 import org.junit.Before;12 import org.junit.Test;13 14 import 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() throws Exception {26         String resources = "SqlMapConfig.xml";27         InputStream inputStream = Resources.getResourceAsStream(resource);28         // 创建SqlSessionFcatory29         sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);30     }31     32     @Test33     public void testFindUserList() {34         SqlSession sqlSession = sqlSessionFactory.openSession();35       //创造查询条件36        Vo userQueryVo = new UserQueryVo();37         UserCustom userCustom = new UserCustom(); 38         userCustom.setSex("2");39         userCustom.setUsername("小");40         userQueryVo.setUserCustom(userCustom);41       // 创建Usermapper对象,mybatis自动生成mapper代理对象42         UserMapper-Mapper = sqlSession.getMapper(UserMapper .class);43         Listlist=mapper.findUserList(userQueryVo);44         System.out.println(list);45         sqlSession.commit();46         sqlSession.close();47     }48 }
Ansicht Code二:输出映射

1.resultType

  使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功.

  如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象.

  只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象.

1.1.输出简单类型页功能。'

  UserMapper.xml的代码 

1 2 5 ! space有特殊作用,namespace等于mapper接口地址 7  --> 8 12 13     16

sind UserMapper.java的代码

1 public interface UserMapper {2     //用户信息综合查询数3     public int findUserCount(UserQueryVo userQueryVo);4

1 Paket com.mybatis.dao.test; 2  3 import java.io.InputStream; 4 import java.util.Date; 5 java.util.List importieren; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory;10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;11 import org.junit.Before;12 import org.junit.Test;13 14 import 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() throws Exception {26         String resources = "SqlMapConfig.xml";27         InputStream inputStream = Resources.getResourceAsStream(resource);28         //建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       // 创建Usermapper对象,mybatis自动生成mapper代理对象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 }
Code anzeigen

小结:查询出来的结果集只有一行一列,可以使用简单类型进行输出映射。

1.2.输出pojo对象和pojo列表  

  不管是输出的pojo单个对象还是一个列表(list中包括pojo),在mapper.xml中resultType指定的类型是一样的.

  在mapper.java指定的方法返回值类型不一样.

 1.2. 1. 输出 单 个 pojo 对象 , 方法 返回值 是 单 个 对象 类型

1 public interface usermapper {2 /** Benutzerinformationen basierend auf der ID abfragen* /3 öffentlicher Benutzer findUserbyid (int id); 4}

 1.2.2.输出pojo对象list,方法返回值是List

1 öffentliche Schnittstelle UserMapper {2     /**Fuzzy-Abfrage von Benutzerinformationen basierend auf dem Benutzernamen*/3     public List findUserByName(String username);4 }

小结:生成的动态代理对象中是根据mapper.java方法的返回值类型确定是调用select One(返回单个对象调用)还是selectList(返回集合对象调用)

1.3.输出类型resultMap

    mybatis中使用resultMap完成高级输出结果映射.

 1.3.1.resultMap使用方法

    ( 1). (1).需求:将下面的sql使用User完成映射

    select id id_,username username_ from t_user where id=?

    User类中属性名和上边的列名不一致.

  (2).定义resultMap   

1 2 5 12 13 18 19 30 31


  (3) Verwenden Sie resultMap als Ausgabetypzuordnung der Anweisung

1 4 < ;select id="findUserByIdResultMap" parameterType="int " resultMap="userResultMap" >5 select id id_,username username_ from t_user where id=#{id}6

UserMapper.java-Code

öffentliche Schnittstelle UserMapper { /**Fragen Sie Benutzerinformationen basierend auf der ID ab und verwenden Sie resultMap für die Ausgabe*/ public User findUserByIdResultMap(int id);}

Junit-Testcode:

1 Paket com.mybatis.dao.test; 2 3 import java.util.Date; 5 import org.apache.io.Resources; org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory;10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;11 import org.junit.Before;12 import org.junit.Test; 13 14 import 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 privat SqlSessionFactory sqlSessionFactory;22 23 // Diese Methode befindet sich in Execute 24 vor der Ausführung von findUserByIdTest @Before25 public void setUp() throws Exception {26 String resources = "SqlMapConfig.xml";27 InputStream inputStream = Resources.getResourceAsStream(resource);28 // Create SqlSessionFcatory29 sqlSessionFactory = new SqlSessionFactoryBuilder().build( inputStream);30 }31 32 @Test33 public void testFindUserByIdResultMap() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 // Usermapper-Objekt erstellen, mybatis generiert automatisch Mapper-Proxy-Objekt 36 UserMapper mapper = sqlSession.getMapper(UserMapper.class) ;37         User user = mapper.findUserByIdResultMap(1);         System.out.println(user); 40   }41 }
Code anzeigen

Zusammenfassung:

Verwenden Sie resultType für die Ausgabezuordnung. Nur wenn der abgefragte Spaltenname mit dem Attributnamen im Pojo übereinstimmt, kann die Spalte erfolgreich zugeordnet werden.

Wenn der abgefragte Spaltenname nicht mit dem Pojo-Attributnamen übereinstimmt, definieren Sie eine resultMap, um eine Zuordnungsbeziehung zwischen dem Spaltennamen und dem Pojo-Attributnamen herzustellen.

Das Obige sind die Grundlagen für den Einstieg in mybatis (4) – der Inhalt der Eingabe- und Ausgabezuordnung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn