mybatis中带下划线变量的映射问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中带下划线变量的映射问题相关的知识,希望对你有一定的参考价值。
mybatis从数据库里获取信息映射到实体类的时候,
带下划线的数据映射不过来。。。。
比如我定义一个实体类Category
int id;
int parent_id;
String name;
String en_name;
数据库对应的表:category
int id;
int parent_id;
varchar name;
varchar en_name;
我用mybatis取数据库中这四个字段的时候,id 和name 都能正常取到,但是带下划线的parent_id 、en_name 都取不到,,,
把它们改成驼峰式praentId enName 就可以了,,,,
不想去改数据库字段啊,好麻烦,有其他办法解决吗?
<setting name="mapUnderscoreToCamelCase" value="true"/>
mybatis配置文件设置了这项后,查询出来的字段如果带下划线,那么就会去掉下划线,然后采用java驼峰规则。比如数据库字段Parent_id,那么查询出来后,会转为parentid,然后去实体类Category匹配对应的字段。 因为你实体类里有下划线,所以匹配不上。要么采用resultMap 要么禁用掉驼峰规则(不建议禁用)。如果不想该实体类的话,建议采用resultMap。 参考技术A
我一般都用自定义的resultMap
<!-- type指向你的javabean类,id可以自定义 --><resultMap type="Category" id="category">
<!-- property对应实体类的属性名称,column为数据库结果集的列的名称 -->
<id property="id" column="id" />
<result property="parent_id" column="parent_id"/>
<result property="name" column="name"/>
<result property="en_name" column="en_name"/>
</resultMap>本回答被提问者和网友采纳
ssm+mybatis无法给带有下划线属性赋值问题,无法获取数据库带下划线的字段值
1、配置问题
<!-- 是否开启自动驼峰命名规则(camel case)映射, --> <setting name="mapUnderscoreToCamelCase" value="true"/>
或者
//开启驼峰映射 bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
mybatis配置文件设置了这项后,查询出来的字段如果带下划线,那么就会去掉下划线,然后采用java驼峰规则。比如数据库字段Parent_id,那么查询出来后,会转为parentid,然后去实体类匹配对应的字段。 因为你实体类里有下划线,所以匹配不上。要么采用resultMap 要么禁用掉驼峰规则(不建议禁用)。如果不想改实体类的话,建议采用resultMap。 2、增加set方法转换值的方式 原实体类
public class user { private String user_name; private Striing pass_word; public String getPass_word(){ return pass_word; } public void setPass_word(String pass_word){ this.pass_word=pass_word; } }
原sql
select user_name,pass_word from user;
这句sql在数据库可以查到数据,但是使用mybatis的实体类查询就查不到了。 解决方法 在实体类中增加以下两个set方法并把sql改为
select user_name as username,pass_word as password from user;
使用实体类查询数据库实际上就是一个set的过程只需要把每个属性增加一个set方法就好了(这个还行吧)
public void setUsernaem(String user_name){ this.user_name=user_name; } public void setPassword(String pass_word){ this.pass_word=pass_word; }
然后查询:
//还是可以查询全部数据的
select * from user order by id asc;
以上是关于mybatis中带下划线变量的映射问题的主要内容,如果未能解决你的问题,请参考以下文章
如何通过环境变量设置名称中带有下划线的 Spring Boot 属性?
Mybatis ,实体类里面的变量名称和表里面字段写的不一致,一个是表里是下划线,实体类是大写
Mybatis ,实体类里面的变量名称和表里面字段写的不一致,一个是表里是下划线,实体类是大写