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); } }