Mybatis 查询返回null
先看看我写的代码如下:
实体类:
public class UserRank {
private Integer rankId;
//等级id
private Integer userRankId;
//等级积分
private Integer rankMark;
//等级名称
private String rankName;
public Integer getRankId() {
return rankId;
}
public void setRankId(Integer rankId) {
this.rankId = rankId;
}
public Integer getUserRankId() {
return userRankId;
}
public void setUserRankId(Integer userRankId) {
this.userRankId = userRankId;
}
public Integer getRankMark() {
return rankMark;
}
public void setRankMark(Integer rankMark) {
this.rankMark = rankMark;
}
public String getRankName() {
return rankName;
}
public void setRankName(String rankName) {
this.rankName = rankName;
}
@Override
public String toString() {
return "UserRank{" +
"rankId=" + rankId +
", userRankId=" + userRankId +
", rankMark=" + rankMark +
", rankName='" + rankName + '\'' +
'}';
}
}
Mapper类:
public interface UserRankMapper {
//添加权限
void addUserRank(UserRank userRank);
//查询权限
UserRank select(Integer id);
}
MapperImple.xml实现类:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserRankMapper">
<select id="select" parameterType="Integer" resultType="entity.UserRank">
SELECT user_rank_id,rank_mark,rank_name FROM user_rank WHERE user_rank_id=#{id}
</select>
</mapper>va
在这里插入代码片
测试类:
public static void main(String[] args) throws IOException{
String resource = "MyBatisConfiguration.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession openSession = sqlSessionFactory.openSession();
UserRankMapper mapper = openSession.getMapper(UserRankMapper.class);
UserRank select = mapper.select(1);
System.out.println(select);
输出结果:
DEBUG [main] - ==> Preparing: SELECT user_rank_id,rank_mark,rank_name FROM user_rank WHERE user_rank_id=?
DEBUG [main] - ==> Parameters: 1(Integer)
TRACE [main] - <== Columns: user_rank_id, rank_mark, rank_name
TRACE [main] - <== Row: 1, 8000, 钻石
DEBUG [main] - <== Total: 1
null
SQL查询正常,返回对象为空,这是SQL下划线和实体封装大小写出了问题
解决办法:
在全局配置中设置:
<setting name="mapUnderscoreToCamelCase" value="true"/>
在运行结果正常:
DEBUG [main] - ==> Preparing: SELECT user_rank_id,rank_mark,rank_name FROM user_rank WHERE user_rank_id=?
DEBUG [main] - ==> Parameters: 1(Integer)
TRACE [main] - <== Columns: user_rank_id, rank_mark, rank_name
TRACE [main] - <== Row: 1, 8000, 钻石
DEBUG [main] - <== Total: 1
UserRank{rankId=null, userRankId=1, rankMark=8000, rankName='钻石'}