SSM】之MyBatis輸出對映
阿新 • • 發佈:2018-12-31
MyBatis中的輸出對映有兩種:resultType和resultMap。
1、resultType
使用resultType進行結果對映時,只有當查詢結果中有至少一列的名稱和resultType指定的POJO的某個屬性名稱相同時,才會對映成功。如果查詢出來的列名和POJO中的屬性名全部不一致,就不會對映成任何POJO物件(解決這個問題可以使用下面介紹的resultMap對映)。
resultType的型別可以是HashMap,這樣查詢出來的列名就是HashMap中的key。
2、resultMap
MyBatis使用resultMap可以完成高階輸出結果的對映。如果查詢出來的列名和POJO中的屬性名不一致,可以通過定義一個resultMap對列名和POJO屬性名之間做一個對映關係。resultMap的具體程式碼如下: 定義resultMap的程式碼:Statement中的程式碼:<!-- 自定義ResultMap:自定義ResultMap的作用是將查詢出來的列名和pojo的屬性名做一個對映關係 --> <!-- type是最終對映到的pojo物件型別,可以是屬性名;id是對ResultMap的唯一標識 --> <resultMap type="emp" id="employeeMap"> <!-- id標籤和result標籤中都有column和property兩個屬性,前者是查詢出來的列名,後者是對映到的pojo中的屬性名 --> <!-- id表示查詢結果中的主鍵列的對映關係 --> <id column="eid" property="empNo" /> <!-- result表示查詢結果中的普通列的對映關係 --> <result column="username" property="eName" /> </resultMap>
<!-- 使用resultMap輸出員工資訊,resultMap的屬性值是自定義的resultMap的id -->
<!-- 注意:如果resultMap定義在其他mapper檔案中,則需要在resultMap的id前面加上所在mapper檔案的namespace值 -->
<select id="findEmployeeListWithResultMap" resultMap="employeeMap">
SELECT empno eid, ename username FROM EMP
</select>
Mapper介面中的程式碼:
測試程式碼:List<Employee> findEmployeeListWithResultMap() throws Exception;
// 使用resultMap輸出員工資訊 @Test public void testFindEmployeeListWithResultMap() throws Exception { SqlSession session = factory.openSession(); EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); List<Employee> list = mapper.findEmployeeListWithResultMap(); for (Employee e : list) { System.out.println(e); } }