1. 程式人生 > >SSM】之MyBatis輸出對映

SSM】之MyBatis輸出對映

        MyBatis中的輸出對映有兩種:resultType和resultMap。

1、resultType

        使用resultType進行結果對映時,只有當查詢結果中有至少一列的名稱和resultType指定的POJO的某個屬性名稱相同時,才會對映成功。如果查詢出來的列名和POJO中的屬性名全部不一致,就不會對映成任何POJO物件(解決這個問題可以使用下面介紹的resultMap對映)。

        resultType的型別可以是HashMap,這樣查詢出來的列名就是HashMap中的key。

2、resultMap

        MyBatis使用resultMap可以完成高階輸出結果的對映。如果查詢出來的列名和POJO中的屬性名不一致,可以通過定義一個resultMap對列名和POJO屬性名之間做一個對映關係。resultMap的具體程式碼如下: 定義resultMap的程式碼:
<!-- 自定義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>
Statement中的程式碼:
<!-- 使用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);
	}
}