mybatisplus字段名称有下划线读取不到值的问题
问题
环境:springboot + mybatis-plus
现在有这么⼀个实体there be 句型
10000.sc.ity;
import batisplus.annotation.TableField;
import batisplus.annotation.TableName;西瓜英语
import java.io.Serializable;
@TableName(value ="your_table")
public class Info implements Serializable {
/**
* 姓名
logistic
*/
@TableField(value ="PERSON_NAME")
private String person_name;
public String getPerson_name(){
return person_name;
英语四级听力多少分}
public void tPerson_name(String person_name){
this.person_name = person_name;
}
}
四级英语各小题分值
实体有⼀个字段叫person_name,并且我指定了数据库⾥⾯的字段为PERSON_NAME(TableField注解),但是查询的时候值为null,其他不带下划线的字段值正常
⽤⼤腿都能想到肯定和下划线有关系,最终在mybatis-plus官⽹找到这么⼀段话:
# 官⽹ /guide/faq.html#cau-org-apache-ibatis-type-typeexception-error-tting-null-for-parameter-1-with-jdbctype-other
MybatisConfiguration configuration =new MybatisConfiguration();
configuration.tDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
configuration.tJdbcTypeForNull(JdbcType.NULL);
照耀的意思
configuration.tMapUnderscoreToCamelCa(true);//开启下划线转驼峰
sqlSessionFactory.tConfiguration(configuration);
开启了下划线转驼峰,这不多此⼀举吗,我都指定了实体字段和数据库字段的映射关系,偏还给我转驼峰,转成personName了,⼀看实体⾥⾯没有personName当然是null了
解决
所以你只要告诉mybatis-plus我不要下划线转驼峰即可,mybatis-plus底层也就是mybatis,总之不管什么⽅式,你要配置⼀下,如下是yml配置
mybatis-plus:
configuration:
map-underscore-to-camel-ca:fal # 数据库下划线⾃动转驼峰标⽰关闭
rope是什么意思或者properties格式配置mybatis
源码
在org.flection.MetaClass的⽅法findProperty⾥⾯:
强硬派public String findProperty(String name,boolean uCamelCaMapping){环保英文
itu
if(uCamelCaMapping){
name = place("_","");
}
return findProperty(name);
}
如果设置了uCamelCaMapping为true,就简单粗暴的把下划线⼲掉了