Mybatis总结一:resultType ,resultMap

一 resultType

如果返回的只是对象,而不是对象的list


<sql id = "Base_Column">

    p.id,

    p.name,

    p.age,

    p.gender ,

</sql>
<select id="" resultType="类路径" parameterType="xxx">

    select <include refid="Base_Column"> 

    from  t_people as p

    where id = #{id}

</select>


注解:这条sql语句。等价于


select 

    p.id,

    p.name,

    p.age,

    p.gender ,

    p.has_girl_friend as hasGirlFriend,

    from  t_people as p

    where id = #{id}

注意:

           1 <include .....>中的sql放在select语句中是一个完整的sql(当然你也可以直接将查询的字段放在 select 中),博主的意思是,如果你表用了别名,<include .../>不要忘记字段前面加上 "别名.",不然报错啦。

           2 <include .../>最后一个字段别多加 "," ,博主以前总是被坑(细心)


二 resultMap

    如果返回的是一个实体类的list,就要用resultMap


<resultMap id="BaseMap" type="com.People">
   <result column="id" property="id"/> 
   <result column="name" property="name">
   <result column="has_girl_friend" property="hasGirlFriend">
</resultMap>
<select id="" parameterType="" resultMap="BaseMap">

    select <include refid="">

    from t_people

</select>

注意:

    1 resultMap中的column  一定要和表字段一样,property 要和实体类的属性一样,<include ..../里面的字段也要和实体类的属性名一样。。

    2 不过是通过sql计算得到的还是直接查询的字段,实体类中一样要有,因为他要将查到的数据映射到实体类中的字段,不然控制台就会报错,初学者刚开始一定要弄清楚!


三 总结

    1 实际开发中,很多错是因为 没有和实体类字段对上,一定要和实体类属性对上!

    2 很多时候,代码里抛出NullPointException,有时候就是返回的对象或者list中,某些字段为null,可以dubbg调试。这种情况,就要好好查查你的sql了,字段对应实体类的字段。

    3 如果你as了一个实体类中不存在的属性,也会报错。

总之,按照总结1 来,细心。


由于水平有限,排版不熟练,请多多指教!







猜你喜欢

转载自blog.csdn.net/u014425865/article/details/80574023