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 就可以了,,,,
不想去改数据库字段啊,好麻烦,有其他办法解决吗?

<!-- 是否开启自动驼峰命名规则(camel case)映射, -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
mybatis配置文件设置了这项后,查询出来的字段如果带下划线,那么就会去掉下划线,然后采用java驼峰规则。比如数据库字段Parent_id,那么查询出来后,会转为parentid,然后去实体类Category匹配对应的字段。 因为你实体类里有下划线,所以匹配不上。要么采用resultMap 要么禁用掉驼峰规则(不建议禁用)。如果不想该实体类的话,建议采用resultMap。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-12

我一般都用自定义的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>

本回答被提问者和网友采纳
相似回答