Mybatis 下划线_英文 _test 与 下划线_数字 _1 等特殊字段无法映射为实体类的字段问题
目录
- 一、下划线_英文 _test 无法映射为实体类的字段问题
- 方案一
- 方案二
- 二、下划线_数字 _1 等特殊字段无法映射为实体类的字段问题
- 参考链接
一、下划线_英文 _test 无法映射为实体类的字段问题
方案一
开启驼峰命名规则映射
在MyBatis配置文件
mybatis-config.xml
中开启驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典Java 属性名 aColumn 的映射;代码如下:
<configuration>
<!-- 全局配置 -->
<settings>
<!--开启驼峰命名规则映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
方案二
在mapper映射文件的< select ></ select >
标签中利用resultMap
处理结果映射。
方案二有点麻烦,笔者的思路是使用具有实体类映射的方法注解,去映射字段,如果有特殊的字段,如果下划线后是英文,笔者的这个注解方法映射,是可以解决的,但如果下划线后的是数字,那么就要考虑在 使用 SQL 语句时,使用 AS 关键字配置下划线后是数字的字段别名,例如特殊字段 test_1 那么就可以配置别名为 AS test_one,也就可以使用笔者之前的方法 —— 实体类映射数据库字段的注解方法。
实体类映射数据库字段的注解方法:
若依框架内的实体类映射注解方法
import org.springframework.data.mongodb.core.mapping.Field;
传统 Javax 实体类映射注解方法
import javax.persistence.Column;
具体实体类映射演示:
数据库字段:test_id
、test_name
映射
实体类字段:testId
、testName
import org.springframework.data.mongodb.core.mapping.Field;
import javax.persistence.Column;
import lombok.Data;
@Data
public class TestEntity {
/**
* 测试编号
*/
@Field(name = "test_id")
private String testId;
/**
* 测试姓名
*/
@Column(name = "test_name")
private String testName;
}
二、下划线_数字 _1 等特殊字段无法映射为实体类的字段问题
从上面的方案二解释中知道,下划线_数字 名字的字段是无法被映射的,最好的方法是使用 SQL 语句中使用 关键字AS 配置字段的别名。
具体实体类映射无法映射的问题演示:
import org.springframework.data.mongodb.core.mapping.Field;
import javax.persistence.Column;
import lombok.Data;
@Data
public class TestEntity {
/**
* 测试1
*/
@Field(name = "test_1")
private String test1;
/**
* 测试2
*/
@Column(name = "test_2")
private String test2;
}
(实体类 TestEntity
的test1
、test2
值会是 null
值,无法获取到数据)
具体的 xml 文件 SQL 别名查询
<select id="testFunction" resultType="com.test.entity.TestEntity">
SELECT test_1 AS test_one, test_2 AS test_two FROM test_table
</select>
import org.springframework.data.mongodb.core.mapping.Field;
import javax.persistence.Column;
import lombok.Data;
@Data
public class TestEntity {
/**
* 测试1
*/
@Field(name = "test_one")
private String testOne;
/**
* 测试2
*/
@Column(name = "test_two")
private String testTwo;
}
参考链接
1. 解决MyBatis不能将表中含有下划线的字段映射到实体属性的两种方案
2. mybatis+springmvc 搭建的系统——数据库带下划线的字段无法取到值
还没有评论,来说两句吧...