千家信息网

如何使用Mybatis实现分页效果

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章主要介绍如何使用Mybatis实现分页效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、创建分页的工具类PageUti,存储分页所需要的五个数据:pageIndex
千家信息网最后更新 2024年11月20日如何使用Mybatis实现分页效果

这篇文章主要介绍如何使用Mybatis实现分页效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、创建分页的工具类PageUti,存储分页所需要的五个数据:pageIndex(当前页码),pageSize(每页记录条数),count(总记录数),pageNum(总页数),list(每一页的内容)。

/** * @param  泛型类 */public class PageUtil {    //当前页码    private int pageIndex;    //每页记录数    private int pageSize;    //总记录数    private int count;    //总页数    private int pageNum;    //每一页的内容    private List list;}

二、xml文件:MySQL对分页的支持是通过limit子句。

如:

# 每页10条记录,取第一页,返回的是前10条记录

select * from books limit (1-1)*10,10;

# 每页10条记录,取第二页,返回的是第11条记录,到第20条记录,

select * from books limit (2-1)*10,10;

所以:limit的第一个参数=(当前页码-1)*每页记录数

        

三、BooksServiceImpl.java:将limit需要的两个参数存入map集合中,再将分页所需要的五个数据封装。

public PageUtil getBooksPage(int pageIndex, int pageSize) {        PageUtil pageUtil=new PageUtil<>();        SqlSession sqlSession= MybatisUtil.getSqlSession();        try {            //booksMapper是使用动态代理模式,运行反射机制,创建的一个代理对象            BooksMapper booksMapper=sqlSession.getMapper(BooksMapper.class);            Map map=new HashMap();            int row=booksMapper.getCount(map);            //计算总页数            int pageCount= (int) Math.ceil((double) row / pageSize);            //limit的第一个参数=(当前页码-1)*每页记录数            map.put("pageIndex",(pageIndex - 1) * pageSize);            map.put("pageSize", pageSize);            List list=booksMapper.getBooksPage(map);            //将数据封装            pageUtil.setPageIndex(pageIndex);            pageUtil.setPageSize(pageSize);            pageUtil.setCount(row);            pageUtil.setPageNum(pageCount);            pageUtil.setList(list);        }catch (Exception e){            e.printStackTrace();        }finally {            sqlSession.close();        }        return pageUtil;    }

四、servlet:

protected void getBooks(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        if(request.getParameter("pageIndex")!=null) {            int pageIndex=Integer.parseInt(request.getParameter("pageIndex"));            show(response,pageIndex,search);        }else {            show(response);        }     }
private void show(HttpServletResponse response,Object ...ages) throws IOException {        int pageIndex = 1;//默认第一页        if(ages.length>0){            pageIndex=(int)ages[0];        }        PageUtil pageUtil=new PageUtil();        //每页10条数据        pageUtil=new BooksServiceImpl().getBooksPage(pageIndex,10);        String js= JSON.toJSONString(pageUtil);        PrintWriter pw=response.getWriter();        pw.write(js);    }

五、前段页面

显示分页:

var page = "
  • 共" + data.count + "条,共" + data.pageNum + "页,当前第" + data.pageIndex + "页
  • "; page += "
  • 首页
  • "; if (data.pageIndex == 1) { page += "
  • 上一页
  • "; } else { page += "
  • 上一页
  • "; } // for (var i = 1; i <= data.pageNum; i++) { // page += "" + i + "" // } if (data.pageIndex < data.pageNum) { page += "
  • 下一页
  • "; } else { page += "
  • 下一页
  • "; } page += "
  • 末页
  • ";

    点击分页(myPage):通过ajax请求将页码传到servlet

    function myPage(index) {            console.log(index)            $.getJSON("books/getBooks.do", {"pageIndex": index}, function (data) {                showBooks(data)            });}

    六、MybatisUtil.java工具类:向外提供一个方法,可以获取SqlSession对象

    public class MybatisUtil {    static SqlSessionFactory sqlSessionFactory;     // 加载主配置文件,并创建 sqlSessionFactory    static {        String resource = "com/xmx/config/mybatis-config.xml";        InputStream inputStream = null;        try {            inputStream = Resources.getResourceAsStream(resource);        } catch (IOException e) {            e.printStackTrace();        }        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    }     /**     * @Description: 向外提供一个方法,可以获取SqlSession对象     * @Return: org.apache.ibatis.session.SqlSession     */    public static SqlSession getSqlSession() {//        return sqlSessionFactory.openSession(true);        return sqlSessionFactory.openSession();    }}

    以上是"如何使用Mybatis实现分页效果"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

    0