MyBatis自定義關系映射及實現分頁查詢


ResultMap 映射定義

當屬性和表的字段不一致時,如果在映射文件中還是使用resultType就無法創建出對象

解決方法只能自己實現關系的映射,默認如果屬性和字段是一致的情況下MyBatis自動創建一個resultMap進行關系映射

如果使用自定義的resultMap返回的類型就不能再使用resultType,必須使用resultMap

<mapper namespace="com.motianjie.dao.DeptVoMapper">
   
    <select id="findDeptVo" parameterType="integer" resultMap="deptMap">
        select deptno,dname,loc from dept where deptno=#{deptno}
    </select>

  //resultMap 映射實體類的屬性和表之間的關系
  // type:設置哪個實體類進行關系映射
  //id 其他地方需要引用該resultMap的唯一標識
    <resultMap type="DeptVo" id="deptMap">
     //result 查詢某行的某個字段   
     //property 實體類屬性 
     //column 數據庫表的字段名
     //javaType 實體類的屬性的類型 可以用java的類型 也可使用mybatis的簡寫類型(類型的首字母小寫)
      //jdbcType 數據庫字段的類型 規則:把數據庫的類型改成全大寫
        <result property="id" column="deptno" javaType="integer" jdbcType="INTEGER"/>
        <result property="deptname" column="dname" javaType="string" jdbcType="VARCHAR"/>    
        <result property="location" column="loc"/>
    </resultMap>

 

使用Mapper映射器

a.該接口中的方法和映射文件中定義的語句一一對應。接口方法的名稱必須和語句id完全相同,接口方法的返回值和參數和相應的語句相對應。

b.修改映射文件,以便讓MyBatis能找到這個映射類。做法就是將映射文件的命名空間改為對應的映射文件的類名。

c.映射類定義和配置好之后,在SqlSession上調用getMapper方法,並傳入要獲取的Mapper類即可。

 

利用MyBatis實現分頁查詢

 分頁功能,通過mybatis的api實現
 selectList("findAll",null,new RowBounds(0,2))
 第一個參數是sql的id,第二個是條件 , 第三是RowBounds(oddset,limit) 構造器
oddset 指定抓取記錄的起始行,從0開始
limit 指定抓取記錄的數量

 查詢所有部門信息,每頁顯示兩條,顯示出第一頁

@Test
public void testFindByPage(){
    List<Dept> list = sqlSession.selectList("findAll",null,new RowBounds(0,2));
    for(Dept dept:list){
        System.out.println(dept);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM