mybatis入門基礎(四)----輸入映射與輸出映射一:輸入映射
透過parameterType指定輸入參數的類型,類型可以是簡單型別、hashmap、pojo的包裝類型。
1.1.傳遞pojo的包裝對象
1.1.1.需求描述
完成用戶資訊的綜合查詢,需要傳入的查詢條件可能很複雜(可能包括用戶信息,其它信息,比如,商品,訂單等等)。
1.1.2.定義包裝類型的pojo
針對上邊的需求,建議使用自訂的包裝類型pojo,在包裝類型的pojo中將複雜的查詢條件包裝進去。
包裝查詢條件的pojo類別UserQueryVo類別的程式碼:
1 package com.mybatis.entity; 2 3 /**4 * 5 * @ClassName: UserQueryVo 6 * @Description: TODO(包裝類型) 7 * @author warcaft 8 * @date 2015-6-30 上午12:00:41 9 *10 */11 public class UserQueryVo {12 // 3 * 4 * @ClassName: UserCustom 5 * @Description: TODO(使用者的擴充類別) 6 * @author warcaft 7 * @date 2015-6-30 上午12:02:37 8 * 9 */11 public class UserQueryVo {12 59 //2 * 3 * @ClassName: UserMapper 4 * @Description: TODO(使用者管理mapper介面) 5 * @author warcaft 6 * @date 2015-6-30 上午12:14:56 7 */11 public class 使用者查詢條件14 PRivate UserCustom userCustom;15 16 public UserCustom getUserCustom() {17 return userCustom;18 }19 20 User this.userCustom = userCustom;22 }23 //可以包裝其它查詢條件. .....24 25 }
View Code
UserCustom類別的程式碼
1 package com.mybatis.entity; 2 /**&*/10 public class UserCustom extends User{11 //可以擴充使用者的使用者的資訊12 }
View Code
UserMapper.xml的程式碼
在UserMapper.xml中定義使用者資訊綜合查詢(假設查詢條件很複雜,透過進階查詢複雜關聯查詢)
1 5 查看程式碼二:輸出對應
ult1.resultType。名一致,該列才可以成功對應。 只要查詢出來的列名和pojo中的屬性有一個一致,就能建立pojo物件。 1.1.輸出簡單類型需求:用戶資訊的綜合查詢列表,透過查詢總數才能實現分頁功能。 'UserMapper.java 的代碼2 //使用者資訊綜合查詢總數3 public int findUserCount(UserQueryVo userQueryVo);4 }
Junit測試程式碼
1 個套件com.mybatis.dao.test;2 3 導入java.io.InputStream; 4 導入java.util.Date; 5 導入java.util.List;6 7 導入rg.apache.ibatis.io .Resources; 8 導入org.apache.ibatis.session.SqlSession; 9 導入og.apache.ibatis.session.SqlSessionFactory;10 導入og.apache.ibatis.session.SqlSessionFactoryBuilder; rg.junit.Before;12 導入org.junit.Test;13 14 導入com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 importVo; com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21 private SqlSessionFactory sqlSessionFactory;22 23 {26 String resource = "SqlMapConfig.xml ";27 InputStream inputStream = Resources.getResourceAsStream(resource); 32 @Test33 public void findUserCountTest() {34 SqlSession sqlSession = sqlSessionFactory.openSession ();35 //建立查詢條件36 UserQueryVo userQueryVo = new UserQueryVo();37 UserCustom userCustom = newuserC. 39 userCustom.setUsername("小");40 userQueryVo. setUserCustom(userCustom);41 // 建立Usermapper對象,mybatis自動產生Usermapper代理對象42 UserMapper mapper = sqlSession.getMapper(UserMapper .class);435m User System.out.println(count );45 sqlSession.commit();46 sqlSession.close();47 }48 }
查看程式碼
小結:
1.2.輸出pojo物件和pojo列表不管是輸出的pojo單一物件還是一個列表(list中包含pojo),在mapper.xml
在mapper.java指定的方法回傳值類型不一樣。
1.輸出單一pojo對象,方法回傳值是單一物件型別
1 public interface UserMapper {2 /**根據ID查詢用戶資訊*/3 public User findUserById(int id);#&*/3 public User findUserById(int id);44444m. 2.輸出pojo物件list,方法傳回值為List
:產生的動態代理物件中是根據mapper.java方法的回傳值類型決定是呼叫selectOne(單一回傳物件呼叫)還是selectList(傳回集合物件呼叫)
1.3 .輸出類型resultMap
Mybatis中使用resultMap完成進階輸出結果映射。
1.3.1.resultMap使用方法 (1).規定resultMap (2).使用resultMap作為語句的輸出映射類型(2).使用resultMap作為語句的輸出映射類型
( .需求:將下面的sql使用完成使用者映射
🎜 (2).定義結果圖
1 2 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis. org/dtd/mybatis-3-mapper.dtd"> 5 8 12