0
点赞
收藏
分享

微信扫一扫

【Mybatis报错】attempted to return null from a method with a primitive return type (int).

一天清晨 2022-03-11 阅读 137

我在做分页查询时报错,场景是这样的:

  • mapper.xml 中sql语句如下
     <select id="selectTotalCount" resultMap="brandResultMap">
            select count(*) from tb_brand;
        </select>

  • dao层接口如下
    int selectTotalCount();

  • Service层
      public PageBean<Brand> SelectByPage(int currentPage, int pageSize) {
            SqlSession sqlSession = factory.openSession();
            BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
            int begin = (currentPage-1)*pageSize;
            int size = pageSize;
            List<Brand> brands = brandMapper.selectByPage(begin, size);
            int totalCount = brandMapper.selectTotalCount();
            PageBean<Brand> pg = new PageBean<>();
            pg.setRows(brands);
            pg.setTotalCount(totalCount);
    
            sqlSession.close();
            return pg;
        }

    报错如下

    Caused by: org.apache.ibatis.binding.BindingException: Mapper method 'com.itheima.mapper.BrandMapper.selectTotalCount attempted to return null from a method with a primitive return type (int).
    	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:102)
    	at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
    	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
    	at com.sun.proxy.$Proxy28.selectTotalCount(Unknown Source)
    	at com.itheima.service_20211015_114634.impl.BrandServiceImpl.SelectByPage(BrandServiceImpl.java:50)
    	at com.itheima.web.servlet.BrandServlet.selectByPage(BrandServlet.java:57)
    	... 25 more

    网上查询后发现必须将dao层的int数值类型改成Integer类型,修改后还是报错,后来又查到要把mapper.java和mapper.xml文件中的所有int类型都要改成Integer,全都修改后,终于运行成功

举报

相关推荐

0 条评论