文章目录

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



配合文章:

IDEA Intellij中MyBatis框架搭建全过程及MyBatis工程基本的使用方法


java字段不映射的注解是什么 映射字段名_字段名


如果能成功查询到数据库信息证明框架搭建基本没问题了


但我们可以发现empName显示的为null


原因是在设置实体类时我们对数据库表中的emp_name字段使用的属性名为empName,导致无法映射到对应的字段名。但!这是因为字段名有字段名的规则,属性名有属性名的规则,所以这样是没问题的,但要想要成功访问到对应的字段,需要

解决字段名和属性名的映射关系!

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

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

在映射文件中的SQL语句中将各个字段名写出来,把字段名与属性名不一致的字段 设置一个与属性名一致的别名

java字段不映射的注解是什么 映射字段名_intellij-idea_02


运行测试文件可以发现问题得到了解决:

java字段不映射的注解是什么 映射字段名_intellij-idea_03

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

在mybatis-config.xml配置文件中添加一个全局配置mapUnderscoreToCamelCase,并将其值value设为true:

java字段不映射的注解是什么 映射字段名_java字段不映射的注解是什么_04


相关代码:

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

注释掉使用字段别名的SQL语句对其进行测试:

java字段不映射的注解是什么 映射字段名_java_05


运行测试代码可发现字段可以正常显示:

java字段不映射的注解是什么 映射字段名_mybatis_06

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

在映射文件中将resultType改为resultMap并通过resultMap设置自定义的映射关系

java字段不映射的注解是什么 映射字段名_字段名_07

java字段不映射的注解是什么 映射字段名_mybatis_08


这里要提到的是:若使用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中的属性名要与实体类中的属性名保持一致!

java字段不映射的注解是什么 映射字段名_intellij-idea_09


resultMap中相关标签和属性的含义:


java字段不映射的注解是什么 映射字段名_字段名_10

注释掉之前使用resultType的SQL语句和之前配置的全局配置进行测试

可以看到能正常输出:

java字段不映射的注解是什么 映射字段名_字段名_11