mybatis返回值类型及正确使用resultType和resultMap

MyBatis的返回参数类型分两种

  1. 对应的分类为:

1.1. resultMap :

1.2. resultType :

2 . 对应返回值类型:

2.1. resultMap : 结果集[对象等]

2.2. resultType : Integer,String ,Long ,class

  1. 注意点:
    在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。

3.1 当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时
候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。

3.2 当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

4.使用resultType 后面只能跟一个对象的属性

<select id="countTheNumberOfPatentsInEachArea" resultType="java.lang.String">
      select  area ,count(*) AS 'count' from t_patent group by area
  </select>

上面的sql语句在数据库中查询是完全没有问题的 但是 用到mybatis里面就会包错,错误如下:

Invalid value for getInt() - '丽水市'; nested exception is java.sql.SQLException: Invalid value for getInt()

意思就是数据库中count(*)查询出来的是int类型,但是我们返回的却是String类型,所以就出现了错误

所以我们可以通过resultMap 来解决

<resultMap id="CountResultMap" type="com.boku.www.utils.Count" >
        <result column="area" property="area" jdbcType="VARCHAR" />
        <result column="count" property="count" jdbcType="INTEGER" />
    </resultMap>
<select id="countTheNumberOfPatentsInEachArea" resultMap="CountResultMap">
      select  area ,count(*) AS 'count' from t_patent group by area
    </select>

这样把area 和count查询出来放在一个对象Count里面,就能够装不同的数据类型了。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值