resulttype和resultMap区别详解

这篇具有很好参考价值的文章主要介绍了resulttype和resultMap区别详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、对象不同

1. resultMap

2. resultType

3. 分析

二、描述不同

1、resultMap

2、resulTtype

三、类型适用不同


一、对象不同

1. resultMap

如果查询出来的结果的列名和实体属性不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系(示例代码如下)。

<!--结果返回类型采用resultMap定义-->
<select id="findCardById" parameterType="int" resultMap="findCard">
    select * from card where id=#{id}
</select>

<!--对上述resultMap进行自定义映射-->
<resultMap id="findCard" type="card">
    <id property="id" column="id"/>
    <result property="number" column="number"/>
</resultMap>

2. resultType

resultType使用resultType进行输出映射,只有查询结果显示的列名和实体的属性名一致时,该列才可以映射成功。

<!--结果返回类型采用resultType定义-->
<select id="findCardById" parameterType="int" resultType="card">
    select * from card where id=#{id}
</select>

3. 分析

从上述的实例代码可以看出,针对相同的类的映射,resultType和resultMap均可实现。

  1. 对于resultMap而言,除了需要在<select>标签中进行申明外,还需要单独使用<resultMap></resultMap>实现实体属性与数据库表列名之间的自定义映射,适合多表查询
  2. 对于resultType而言,仅需在<select>标签中用resultType属性申明结果返回类型即可,适合单表查询

二、描述不同

1、resultMap

对于一对一表连接的处理方式通常为在主表A的实体中添加嵌套另一个表B的实体,然后在mapper.xml中采用<association>元素进行对另一个表B的连接处理,其中<association>元素中的select的值为表B对应的SQL语句的唯一标识,一般为namespace+SQL语句的id。

在下述例子中,person实体与card实体是一对一的关系,查询要求是:根据person表中id的值查询用户的id,name,age,sex以及卡号number,但是在person表中只有number对应的card表的id值,故需要采用resulMap。

1.1 Cad类

package com.chen.pojo;
public class Card {
    private int id;
    private String number;
    //toString方法、set以及get方法省略
}

1.2 Cad类对应数据库表

resulttype,mybatis,java,mysql

 1.3 Cad类对应映射文件

<mapper namespace="com.chen.mapper.CardMapper" >
    <select id="findCardById" parameterType="int"   resultMap="findCard">
        select * from card where id=#{id}
    </select>
    <resultMap id="findCard" type="card">
        <id property="id" column="id"/>
        <result property="number" column="number"/>
    </resultMap>
</mapper>

1.4 Person类

package com.chen.pojo;
public class Person {
    private int id;
    private String name;
    private int age;
    private String sex;
    //toString方法、set以及get方法省略
}

 1.5 Person类应数据库表

resulttype,mybatis,java,mysql

1.6  Person类对应映射文件

<select id="findPersonById"
            parameterType="Integer"
            resultMap="CardWithPerson">
        select * from person where id=#{id}
    </select>
    <!--自定义结果集映射,对上述resultMap进行映射处理-->
    <resultMap id="CardWithPerson" type="person">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="sex" column="sex"/>
        <result property="age" column="age"/>
        <!--使用association实现一对一映射
        property为实体属性
        javaType为该实体属性的类型
        select指向SQL语句值为对应语句的唯一标识,由于该参数来自上一条语句的及如果,
        所以值为即namespace+id
        column为所需属性对应在库表中的列名
        -->
        <association property="cardnumber" javaType="Card" column="card_id"
            select="com.chen.mapper.CardMapper.findCardById"/>
    </resultMap>

2、resulTtype

resultType无法查询结果映射到pojo对象的pojo属性中,根据对结构集查询遍历的需要选择使用resultType还是resultMap。适用于单表查询。

三、类型适用不同

1、resultmap:mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,只不过采用resultMap时需要对该resultMap进行自定义映射处理,即采用<resultMap>元素定义映射。

2、resulttype:resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
 文章来源地址https://www.toymoban.com/news/detail-575002.html

到了这里,关于resulttype和resultMap区别详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • day40-Mybatis(resultMap拓展)

    1.2.3 1.数据库字段和javabean实体类属性不一致时 解决方案1:将sql语句中给予别名(别名同javabean中实体类保持一致) 解决方案2:使用resultMap 2.两表关联(用户表和角色表关联查询) 3.association association : (1)复杂的类型关联,一对一 (2)内部嵌套 (3)映射一个嵌套Javab

    2024年02月16日
    浏览(31)
  • Mybatis(四):自定义映射resultMap

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! Emp.java 数据库表:t_emp 若字段名和实体类中的属性名不一致,但是字段名符合数据库的规则(使用

    2023年04月08日
    浏览(30)
  • MyBatis中的ResultMap有什么作用

    MyBatis是一款广泛使用的Java持久层框架,它简化了数据库访问和数据映射的工作。在MyBatis中,ResultMap是一个强大的工具,用于将数据库查询结果映射到Java对象上。本文将深入探讨MyBatis中的ResultMap,解释它的作用以及如何使用它来提高数据访问的效率和可维护性。 在开始之前

    2024年02月07日
    浏览(31)
  • 【MyBatis】自定义resultMap三种映射关系

    目录 一、一对一映射(One-to-One) 1.1 表关系 1.2 resultMap设置自定义映射  二、一对多映射(One-to-Many) 2.1 创建实体 2.2 级联方式处理映射关系 2.3 定义SQL 2.4 OrderMapper接口 2.5 编写业务逻辑层 2.6 Junit测试 三、多对多映射(Many-to-Many) 3.1 表关系 3.2 创建实体 3.3 处理映射关系、

    2024年02月10日
    浏览(33)
  • MyBatis:生命周期、作用域、结果集映射 ResultMap、日志、分页、使用注解开发、Lombok

    理解不同 作用域 和 生命周期 类别是至关重要的,因为错误的使用会导致非常严重的 并发问题 。 SqlSessionFactoryBuilder 一旦创建了 SqlSessionFactory,就不再需要它了; 最佳作用域 是方法作用域(也就是局部方法变量)。 SqlSessionFactory :相当于 数据库连接池 一旦被创建就应该在

    2024年02月02日
    浏览(44)
  • MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 com.github.dreamyoung mprelation 0.0.3.2-RELEASE 注解工具使用优缺点: 优点: 使用简单,通过在实体类上添加@OneToOne / @OneToMany / @ManyToOne / @ManyToM

    2024年01月20日
    浏览(42)
  • 【MySQL】InnoDB和MyISAM区别详解(MySQL专栏启动)

    📫作者简介: 小明java问道之路 , 2022年度博客之星全国TOP3 ,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。          📫 热衷分享,喜欢原

    2024年02月03日
    浏览(40)
  • 社区团购小程序(JSP+java+springmvc+mysql+MyBatis)

    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。   随着移动互联网的普及和电子商务的发展,越来越多的消费者选择在网上购物。同时,社区团购作为一种新型的购物方式,也越来越受到消费者的欢迎。然而,传统的手工管理

    2024年02月03日
    浏览(32)
  • MySQL having关键字详解、与where的区别

    1.1、作用 对查询的数据进行筛选 1.2、having产生的原因 使用where对查询的数据进行筛选时,where子句中无法使用聚合函数,所以引出having 1.3、having使用语法 having单独使用(不与group by一起使用,在Oracle中会报错),单独使用时,大部分场合与where相同 having与grou

    2023年04月21日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包