ZhihanXing 发表于 2024-3-18 11:26:01

mybatis分页查询返回空列表

我在java web开发中想通过mybatis实现一个分页功能,但是在测试中查询出来的结果是空的,在datagrip中是可以查询出来的。想请问是哪一步错了。
MybatisConfig.xml<select id="selectByPage" resultType="edu.zjku.bean.Blog" parameterType="int">
      select * from blog limit #{param1},#{param2}
    </select>
BlogMapper    List<Blog> selectByPage(int pageNumber,int linesPerPage);

BlogService    List<Blog> selectByPage(int pageNumber,int linesPerPage);

BlogServiceImpl@Override
    public List<Blog> selectByPage(int pageNumber,int linesPerPage) {
      List<Blog> list = null;
      InputStream is = null;
      SqlSession sql = null;
      try {
            is = Resources.getResourceAsStream("mybatisConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            sql = sqlSessionFactory.openSession(true);
            BlogMapper mapper = sql.getMapper(BlogMapper.class);
            list = mapper.selectByPage((pageNumber-1)*linesPerPage,linesPerPage);
      } catch (IOException e) {
            e.printStackTrace();
            if (sql != null) {
                sql.close();
            }
            if (is != null) {
                try {
                  is.close();
                } catch (IOException ioException) {
                  ioException.printStackTrace();
                }
            }
      }
      return list;
    }
BlogTest//分页查询测试
      List<Blog> list = null;
      int pageNum = 1;
      int linesPerPage = 3;
      list = service.selectByPage(pageNum, linesPerPage);
      for (Blog blog : list){
            blog.toString();
      }

FishC 发表于 2024-3-18 11:26:22

从你提供的代码来看,可能出现错误的地方有以下几点:

1. MybatisConfig.xml配置文件问题:你在提问中给出的MybatisConfig.xml文件中只有一个简单的SQL语句,这是不完整的。通常情况下,你需要在MybatisConfig.xml中配置数据源、映射文件路径等信息。请确保MybatisConfig.xml配置文件正确,并且已经包含了合适的映射文件。

2. BlogMapper接口问题:请确保BlogMapper接口中定义的方法名称和参数与数据库中的表和字段对应。

3. BlogMapper.xml映射文件问题:请仔细检查BlogMapper.xml映射文件中SQL查询语句是否正确,并且参数位置、名称是否与接口中的方法一致。

4. 数据库连接问题:请确保数据库连接配置正确,并且数据库中是否存在符合查询条件的数据。

另外,你在测试代码中使用了`for (Blog blog : list){ blog.toString(); }`来遍历结果集,但是并没有输出,我假设你想要打印出结果,可以修改为`for (Blog blog : list){ System.out.println(blog.toString()); }`。

如果你仍然无法解决问题,请提供更多的信息和错误提示,以便我们更好地帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ZhihanXing 发表于 2024-3-18 11:28:28

破案了,因为最后的测试类没有使用System.out.println()输出所以看不见。

FishC 发表于 2024-3-18 11:28:41

ZhihanXing 发表于 2024-03-18 11:28
破案了,因为最后的测试类没有使用System.out.println ...

没问题,很高兴你找到了问题所在!确实,如果不使用`System.out.println()`或其他输出方法,结果是看不到的。在编写测试代码时,请确保使用适当的方式输出结果,这样可以更方便地查看和验证查询结果。顺便说一下,你还可以使用日志记录器(如logback、log4j等)来输出结果,这样会更加灵活和可控。如果你有任何其他问题,都可以随时向我提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: mybatis分页查询返回空列表