MyBatis初探三

1、輸入類型( parameterType )

  1. 簡單類型( 基本數據類型 )    
    java

  2. HashMapsql

  3. 單個JavaBean( 自定義JavaBean類型 )數據庫

  4. 傳入JavaBean的包裝類型( 用處:好比說用戶的複雜查詢( 關聯查詢 ),須要傳入用戶信息,商品信息,訂單信息等 )app

介紹 JavaBean的包裝類型( 定義VO和 Mapper.xml )dom



2、輸出類型( resultType和resultMap )

resultType

一、resultType:輸出JavaBean類型:
測試

                           使用resultType進行映射,只有查詢出來的列名和JavaBean中的屬性名一致,才能夠映射成功( 和dbUtils很相似 )。spa

SELECT username username_,sex sex_ from Users

                           若是查詢出來的列名和JavaBean中的屬性名徹底不一致,就不會建立JavaBean對象( null )code

                           若是查詢出來的列名和JavaBean中的屬性名有一個一致,就會建立JavaBean對象orm

2.resultType:輸出簡單類型:xml

                           查詢出來的結果只有一行一列,才能使用簡單類型


3.resultType:輸出JavaBean 集合類型:

                           在mapper.xml中,查詢出單個JavaBean列表,resultType指定的類型仍是JavaBean類型。在Java中獲取返回值類型是集合類型。

            

resultMap( 來完成高級結果映射 ):查詢出的列名和JavaBean的屬性名不一致,能夠經過定義一個resultMap和JavaBean之間作一個關係映射
  1. 定義resultMap

  2. 使用resultMap做爲mapper.xml的輸出映射類型

  3. 測試

<!-- 定義resultMap
		select id id_,name name_ from Users where id=#{id} 和 Users類中的屬性作映射
		type:resultMap最終所映射的JavaBean類型( 能夠使用別名 )
		id:對resultMap的惟一標識
	 -->
	<resultMap id="userResultMap" type="com.ts.domain.Users">
		<!-- id標識查詢結果中的惟一標識
			column:數據庫表的列名
			property:JavaBean屬性名
			最後將column和property作映射
		 -->
		<id column="id_" property="id"/>
		<!-- result:對普通列的映射定義 -->
		<result column="name_" property="name"/>
		
	</resultMap>
	
	
	<select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
		select id id_,name name_ from Users where id=#{id}
	</select>
@Test
public void testResultMap() throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Users user = userMapper.findUserByIdResultMap(2);
System.out.println(user);
}
相關文章
相關標籤/搜索