MyBatis初探三

一、输入类型( parameterType )

  1. 简单类型( 基本数据类型 )    

  2. HashMap

  3. 单个JavaBean( 自定义JavaBean类型 )

  4. 传入JavaBean的包装类型( 用处:比如说用户的复杂查询( 关联查询 ),需要传入用户信息,商品信息,订单信息等 )

介绍 JavaBean的包装类型( 定义VO和 Mapper.xml )



二、输出类型( resultType和resultMap )

resultType

1、resultType:输出JavaBean类型:

                           使用resultType进行映射,只有查询出来的列名和JavaBean中的属性名一致,才可以映射成功( 和dbUtils很类似 )。

SELECT username username_,sex sex_ from Users

                           如果查询出来的列名和JavaBean中的属性名完全不一致,就不会创建JavaBean对象( null )

                           如果查询出来的列名和JavaBean中的属性名有一个一致,就会创建JavaBean对象

2.resultType:输出简单类型:

                           查询出来的结果只有一行一列,才能使用简单类型


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


你可能感兴趣的:(MyBatis初探三)