0
点赞
收藏
分享

微信扫一扫

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

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

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

  • 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 条评论