8.mybatis_output(传智播客)

需求:根据用户id查询用户信息

<resultMap id="userResultMap" type="user">
   <id column="id_" property="id"/>
   <result column="username_" property="username"/>
   <result column="sex_" property="sex"/>
</resultMap>

<select id="findUserById" parameterType="int" resultMap="userResultMap">
   select id as id_,username as username_,sex as sex_ from user where id = #{id}
</select>

id:此属性表示查询结果集的唯一标识,非常重要,如果是多个字段为复合唯一约束则定义多个id。
property:表示pojo类的属性。
column:表示sql查询出来的字段名。
column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。
result:普通结果,即pojo的属性。

一.resultType

1.查询的列名和pojo中的属性名称完全一致时,映射成功。
2.全部不一致,不创建pojo对象。
3.有一个对应的,创建pojo对象。
4.输出pojo对象和输出pojo列表在sql中定义的resultType是一样的。
返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值。
返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用pojo对象作为方法返回值。

二.resultMap

mybatis使用resultMap来完成输出结果的高级映射,当查询出来的结果和pojo的属性不一致时使用,通过resultMap对列名和pojo属性进行映射。
resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。
如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。
resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

猜你喜欢

转载自blog.csdn.net/u010286027/article/details/84190598
今日推荐