Mybatis 下划线_英文 _test 与 下划线_数字 _1 等特殊字段无法映射为实体类的字段问题

清疚 2024-03-03 06:35 103阅读 0赞

目录

  • 一、下划线_英文 _test 无法映射为实体类的字段问题
    • 方案一
    • 方案二
  • 二、下划线_数字 _1 等特殊字段无法映射为实体类的字段问题
  • 参考链接

一、下划线_英文 _test 无法映射为实体类的字段问题

方案一

开启驼峰命名规则映射

在MyBatis配置文件mybatis-config.xml中开启驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典Java 属性名 aColumn 的映射;代码如下:

  1. <configuration>
  2. <!-- 全局配置 -->
  3. <settings>
  4. <!--开启驼峰命名规则映射 -->
  5. <setting name="mapUnderscoreToCamelCase" value="true"/>
  6. </settings>
  7. </configuration>

方案二

在mapper映射文件的< select ></ select >标签中利用resultMap处理结果映射。

方案二有点麻烦,笔者的思路是使用具有实体类映射的方法注解,去映射字段,如果有特殊的字段,如果下划线后是英文,笔者的这个注解方法映射,是可以解决的,但如果下划线后的是数字,那么就要考虑在 使用 SQL 语句时,使用 AS 关键字配置下划线后是数字的字段别名,例如特殊字段 test_1 那么就可以配置别名为 AS test_one,也就可以使用笔者之前的方法 —— 实体类映射数据库字段的注解方法。

实体类映射数据库字段的注解方法:

  1. 若依框架内的实体类映射注解方法

    import org.springframework.data.mongodb.core.mapping.Field;

  2. 传统 Javax 实体类映射注解方法

    import javax.persistence.Column;

具体实体类映射演示:

数据库字段:test_idtest_name

映射

实体类字段:testIdtestName

  1. import org.springframework.data.mongodb.core.mapping.Field;
  2. import javax.persistence.Column;
  3. import lombok.Data;
  4. @Data
  5. public class TestEntity {
  6. /**
  7. * 测试编号
  8. */
  9. @Field(name = "test_id")
  10. private String testId;
  11. /**
  12. * 测试姓名
  13. */
  14. @Column(name = "test_name")
  15. private String testName;
  16. }

二、下划线_数字 _1 等特殊字段无法映射为实体类的字段问题

从上面的方案二解释中知道,下划线_数字 名字的字段是无法被映射的,最好的方法是使用 SQL 语句中使用 关键字AS 配置字段的别名。

具体实体类映射无法映射的问题演示:

  1. import org.springframework.data.mongodb.core.mapping.Field;
  2. import javax.persistence.Column;
  3. import lombok.Data;
  4. @Data
  5. public class TestEntity {
  6. /**
  7. * 测试1
  8. */
  9. @Field(name = "test_1")
  10. private String test1;
  11. /**
  12. * 测试2
  13. */
  14. @Column(name = "test_2")
  15. private String test2;
  16. }

(实体类 TestEntitytest1test2值会是 null 值,无法获取到数据)

具体的 xml 文件 SQL 别名查询

  1. <select id="testFunction" resultType="com.test.entity.TestEntity">
  2. SELECT test_1 AS test_one, test_2 AS test_two FROM test_table
  3. </select>
  4. import org.springframework.data.mongodb.core.mapping.Field;
  5. import javax.persistence.Column;
  6. import lombok.Data;
  7. @Data
  8. public class TestEntity {
  9. /**
  10. * 测试1
  11. */
  12. @Field(name = "test_one")
  13. private String testOne;
  14. /**
  15. * 测试2
  16. */
  17. @Column(name = "test_two")
  18. private String testTwo;
  19. }

参考链接

1. 解决MyBatis不能将表中含有下划线的字段映射到实体属性的两种方案

2. mybatis+springmvc 搭建的系统——数据库带下划线的字段无法取到值

发表评论

表情:
评论列表 (有 0 条评论,103人围观)

还没有评论,来说两句吧...

相关阅读