问题描述
使用Mybatis查询得到实体类
表定义如下
成员ID | 成员姓名 |
---|---|
member_id | member_name |
对应的实体类如下
public class Member {
private Integer memberId;
private String memberName;
// 省略getter和setter
}
对应的Mapper.xml如下
<select id="selectMemberByMemberName" resultType="Member">
SELECT *
FROM member
WHERE member_name = #{memberName}
</select>
通过以下代码得到的member居然是null,这是为什么呢?
Member member = memberMapper.selectMemberByMemberName(memberName);
在日志我启用了DEBUG
模式,发现查询结果集是有返回数据的,但是写不进去Member实体类中,最后发现是因为数据库与Java命名的规范是不一样的,需要转换,Mybatis
也提供了相对应的驼峰命名转换法。例如member_id
对应memberId
,但是默认是不启用的,所以需要手动启动。
解决方法
如果使用Mybatis配置文件,则可以按如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 开启驼峰命名转换 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
如果是springboot集成的,则可以做如下配置
mybatis:
configuration:
mapUnderscoreToCamelCase: true # 开启驼峰命名转换法
按照以上配置后重新访问则可以获得一个查询后的实体类。