mybatis resultType resultMap 的区别------------彻底解决

在MyBatis中,resultTyperesultMap都是用于设置SQL查询结果的返回类型¹²³。以下是它们的详细介绍:

  1. resultType¹²³:它是期望从这条语句中返回结果的类全限定名或别名。注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。以下是一些映射规则:

    • 基本类型:resultType = 基本类型
    • List类型:resultType = List中元素的类型
    • Map类型:单条记录:resultType = map;多条记录:resultType = Map中value的类型
  2. resultMap¹²³:它是对外部resultMap的命名引用。结果映射是MyBatis最强大的特性,如果你对其理解透彻,许多复杂的映射问题都能迎刃而解。resultMapresultType之间只能同时使用一个。

在MyBatis中,resultMap是一个非常强大的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象

resultMap元素的构成:

<resultMap id="" type="">
  <constructor>
    <idArg/>
    <arg/>
  </constructor>
  <id/>
  <result/>
  <association property=""/>
  <collection property=""/>
  <discriminator javaType="">
    <case value=""/>
  </discriminator>
</resultMap>

其中:

  • id属性代表这个resultMap的标识。
  • type属性标识需要映射的POJO。我们可以使用MyBatis定义好的类的别名或自定义类的全限定名。
  • constructor元素用于配置构造方法。当一个POJO没有无参数构造方法时使用。
  • idresult元素都有以下属性¹²³⁴:
    • property:映射到列结果的字段或属性。如果POJO的属性和SQL列名(column元素)是相同的,那么MyBatis就会映射到POJO上。
    • column:对应SQL列。
    • javaType:配置Java类型。
    • jdbcType:配置数据库类型。这是JDBC类型,MyBatis已经为我们做了限定,基本支持所有常用数据库类型。
    • typeHandler:类型处理器。允许你用特定的处理器来覆盖MyBatis默认的处理器。需要指定jdbcType和javaType相互转化的规则。
  • associationcollectiondiscriminator元素用在级联的情况下¹²³⁴。

需要注意的是,resultMapresultType不能同时使用。
在实际使用中,如果你搜索只是返回一个值,比如说String ,或者是int,那你直接用resultType就行了。但是你如果是返回一个复杂的对象,就可以使用resultMap

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发技术控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值