mybatis注解联合查询

img

img

img

img

img


恳求各位看一下,为什么输出是null,单独测试后面两次是有数据的,为什么三个一起就出不来数据了

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7400330
  • 你也可以参考下这篇文章:mybatis判断是否为null和空字符串
  • 除此之外, 这篇博客: mybatis查询数据库返回数据全为null中的 异常过程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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));
         }

     异常结果截图

  • 以下回答由chatgpt基于相关博客总结生成:

    建议采取以下解决方案:

    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语句、未对查询结果进行判空处理等等问题导致。要尽量细心严谨地处理问题,避免出现类似问题。