MyBatis中解决字段名和属性名的映射关系的几种方法

4 篇文章 0 订阅


配合文章: IDEA Intellij中MyBatis框架搭建全过程及MyBatis工程基本的使用方法
在这里插入图片描述
如果能成功查询到数据库信息证明框架搭建基本没问题了
但我们可以发现empName显示的为null
原因是在设置实体类时我们对数据库表中的emp_name字段使用的属性名为empName,导致无法映射到对应的字段名。但!这是因为字段名有字段名的规则,属性名有属性名的规则,所以这样是没问题的,但要想要成功访问到对应的字段,需要 解决字段名和属性名的映射关系!
以下介绍MyBatis中解决字段名和属性名的映射关系的几种方法

1、通过字段别名解决字段名和属性名的映射关系

在映射文件中的SQL语句中将各个字段名写出来,把字段名与属性名不一致的字段 设置一个与属性名一致的别名
在这里插入图片描述
运行测试文件可以发现问题得到了解决:
在这里插入图片描述

2、通过全局配置mapUnderscoreToCamelCase解决字段名和属性名的映射关系

在mybatis-config.xml配置文件中添加一个全局配置mapUnderscoreToCamelCase,并将其值value设为true:
在这里插入图片描述
相关代码:

<!--    设置MyBatis的全局配置 -->
    <settings>
<!--        将下划线_自动映射为驼峰,如emp_name---》empName-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

注释掉使用字段别名的SQL语句对其进行测试:
在这里插入图片描述
运行测试代码可发现字段可以正常显示:
在这里插入图片描述

3、通过resultMap解决字段名和属性名的映射关系

在映射文件中将resultType改为resultMap并通过resultMap设置自定义的映射关系
在这里插入图片描述

在这里插入图片描述
这里要提到的是:若使用resultType则使用的是默认的映射关系,而使用resultMap的话使用的是通过resultMap自定义的映射关系
相关代码:

<!--    resultMap解决字段名和属性名的映射关系-->
    <resultMap id="empResultMap" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
    </resultMap>

    <!--    List<Emp> getAllEmp();-->
    <select id="getAllEmp" resultMap="empResultMap">
        select * from t_emp
    </select>

注意resultMap自定义映射关系中,<id property="" column=""></id>设置的是id字段的映射关系,<result property="" column=""></result>设置的是普通字段的映射关系
property中设置的是属性名,column设置的是字段名,注意column中的字段名要与数据库表的字段名保持一致,property中的属性名要与实体类中的属性名保持一致!
在这里插入图片描述
resultMap中相关标签和属性的含义:
在这里插入图片描述

注释掉之前使用resultType的SQL语句和之前配置的全局配置进行测试
可以看到能正常输出:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Mybatis几种映射字段的方式,包括: 1. 使用ResultMap来映射字段,这种方式可以自定义映射关系,是最灵活的一种方式。 2. 使用@Results注解来映射字段,这种方式适用于简单的映射关系。 3. 使用默认的字段名映射,这种方式不需要额外的配置。 性能上,使用默认的字段名映射的性能最好,因为它不需要额外的配置。但是,如果需要自定义映射关系,使用ResultMap或@Results注解映射字段是更好的选择。 ### 回答2: MyBatis 有三种常见的映射字段的方式,分别是基于注解、基于XML配置文件以及基于混合实现方式。 基于注解的方式是将映射信息直接写在实体类的属性上,通过在属性上添加对应的注解来指定映射关系。这种方式简单直观,可以减少 XML 配置文件的编写量,适合小型项目或者数据库表结构比较简单的情况下使用。 基于XML配置文件的方式则是通过在专门的 XML 文件定义映射信息,包括表、列以及属性的类型等,并且可以使用 SQL 语句进行更复杂的映射操作。这种方式相对灵活,适合复杂的数据库表结构以及需要进行动态 SQL 处理的情况。 基于混合实现方式是将注解和 XML 配置文件相结合,通过注解指定一部分映射信息,同时在 XML 配置文件定义其他映射信息。这种方式可以兼具注解方式和 XML 配置文件方式的优点,灵活性较高。 就性能而言,基于注解的方式相对于 XML 配置文件方式来说通常较好。这是因为基于注解的方式将映射关系直接写在实体类的属性上,避免了 XML 解析的过程,可以减少对系统资源的消耗,提升程序的运行效率。而 XML 配置文件方式需要进行 XML 解析,相对来说会增加一定的系统开销,降低性能。 总体而言,选择何种映射字段的方式应根据项目的具体情况来确定。对于简单的数据库表结构和较小的项目,可以选择注解方式提高开发效率;对于复杂的数据库表结构和需要动态 SQL 处理的情况,可以选择 XML 配置文件方式。如果需要兼具灵活性和开发效率,可以选择混合实现方式。 ### 回答3: 在 MyBatis ,常见的映射字段的方式有三种,分别是基于结果集的映射、基于注解的映射和基于 XML 的映射。 1. 基于结果集的映射:这种方式是通过数据库的字段名和结果集的列之间的映射关系来进行字段映射的,默认情况下,MyBatis 会将数据库的下划线命法转换为驼峰命法,然后与结果集进行对应。这种方式的优点是简单直观,适用于简单的数据查询。性能上来说,由于不需要解析 XML 或注解,所以相对较高。 2. 基于注解的映射:这种方式是通过在实体类的属性上添加注解来进行字段映射的。在注解指定数据库的字段名,然后通过 MyBatis 解析注解来进行映射。这种方式的优点是不需要额外的 XML 文件,可以直接在实体类完成映射配置。性能上来说,由于需要解析注解,相对于基于结果集的映射稍慢一些。 3. 基于 XML 的映射:这种方式是通过在 XML 配置字段映射的方式来进行映射,可以使用 MyBatis 提供的 XML 标签和语法进行配置。这种方式的优点是灵活性强,可以通过 XML 文件进行动态 SQL 查询的编写和配置。性能上来说,由于需要解析 XML 文件,相对较慢,但 MyBatis 在启动时会对所有的 XML 进行解析和缓存,因此对于一次性大量查询的情况来说,性能损耗可以忽略不计。 总体来说,基于结果集的映射方式性能相对最好,因为它不需要额外的解析过程。然而,实际使用应根据具体的需求和场景来选择合适的映射方式,综合考虑灵活性、易用性和性能等因素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GCTTTTTT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值