springboot框架加mybatis的整合在查询数据时返回数据正确条数但内容全为null
mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ly.mybatis.mapper.EmpMapper">
<!-- List<Emp> getAllEmp();-->
<select id="getAllEmp" resultType="emp">
select * from emp
</select>
</mapper>
Emp.java
private Integer eId;
private String eName;
private Integer eAge;
private String eSex;
private String eEmail;
数据库字段名
test.java
@Test
public void testGetAllEmp(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> emps = empMapper.getAllEmp();
emps.forEach(emp-> System.out.println(emp));
}
异常结果截图
建议采取以下解决方案:
1.检查生成的实体类的属性名和数据库中的字段名是否一致。可以通过在xml文件的查询标签中加入resultMap属性,属性值与上方的resultMap标签的id值相同来解决这个问题。
2.使用as保证数据库中的字段名和实体类中的属性名一致,例如:
<select resultType="com.fh.model.User" id="findAllUser">
select user_id as userId,user_name as username,user_sex as sex from t_user_idea
</select>
3.在调用Mapper方法时,对查询结果进行判空处理,或者在查询语句中带上数据记录的主键列,这样即使查询字段皆为NULL值也能得到一个对象实例。
4.仔细检查SQL语句是否正确,特别是在多个字段之间的逗号是否漏掉。
总之,需要逐一排查查询结果为null的原因,可能是命名不一致、写错SQL语句、未对查询结果进行判空处理等等问题导致。要尽量细心严谨地处理问题,避免出现类似问题。