我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用Mybatis实现分页效果示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用Mybatis实现分页效果示例

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



public class PageUtil<T> {
    //当前页码
    private int pageIndex;
    //每页记录数
    private int pageSize;
    //总记录数
    private int count;
    //总页数
    private int pageNum;
    //每一页的内容
    private List<T> 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)*每页记录数


<!--分页,查询当前页的内容-->
    <select id="getBooksPage" resultType="list" parameterType="map">
        select * from books limit #{pageIndex},#{pageSize}
    </select>
<!--查询总记录数-->
    <select id="getCount" resultType="int" parameterType="map">
        select count(*) from books
</select>

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


public PageUtil<Books> getBooksPage(int pageIndex, int pageSize) {
        PageUtil<Books> 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<Books> 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 = "<li>共" + data.count + "条,共" + data.pageNum + "页,当前第" + data.pageIndex + "页</li>";
            page += "<li><a href='#' onclick='myPage(1)'>首页</a></li>";
 
            if (data.pageIndex == 1) {
                page += "<li><a href='#' onclick='myPage(1)'>上一页</a></li>";
            } else {
                page += "<li><a  href='#'  onclick='myPage(" + (data.pageIndex - 1) + ")'>上一页</a></li>";
            }
            // for (var i = 1; i <= data.pageNum; i++) {
            //     page += "<a href='#' onclick='myPage(" + i + ")'>" + i + "</a>"
            // }
            if (data.pageIndex < data.pageNum) {
                page += "<li><a href='#' onclick='myPage(" + (data.pageIndex + 1) + ")'>下一页</a></li>";
            } else {
                page += "<li><a href='#' onclick='myPage(" + data.pageNum + ")'>下一页</a></li>";
            }
            page += "<li><a href='#' onclick='myPage(" + data.pageNum + ")'>末页</a></li>";

点击分页(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);
    }
 
    
    public static SqlSession getSqlSession() {
//        return sqlSessionFactory.openSession(true);
        return sqlSessionFactory.openSession();
    }
}

到此这篇关于使用Mybatis实现分页效果示例的文章就介绍到这了,更多相关Mybites实现分页内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用Mybatis实现分页效果示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Mybatis实现分页效果

这篇文章主要介绍如何使用Mybatis实现分页效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、创建分页的工具类PageUti,存储分页所需要的五个数据:pageIndex(当前页码),pageSize(每页记录
2023-06-21

SpringBoot使用PageHelper插件实现Mybatis分页效果

SpringBoot集成PageHelper插件实现MyBatis分页。通过Maven依赖配置和@PageHelper注解,可轻松实现分页查询。PageHelper提供自定义分页查询、合理化分页、查询统计等高级功能。分页参数需在查询方法内部使用,分页结果可通过Page对象获取。示例代码展示了PageHelper的使用,包括Maven配置、Mapper接口、Controller方法和启动类。PageHelper为MyBatis分页提供了灵活、高效的解决方案,满足各种分页需求。
SpringBoot使用PageHelper插件实现Mybatis分页效果
2024-04-02

mybatis分页效果实现代码

本文为大家分享了mybatis分页效果展示的具体代码,供大家参考,具体内容如下mybatis版本3.4以下结构:spring-mvc.xml
2023-05-31

在mybatis项目中使用oracle如何实现一个分页效果

在mybatis项目中使用oracle如何实现一个分页效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,
2023-05-31

MVC怎么使用MvcPager实现分页效果

今天小编给大家分享一下MVC怎么使用MvcPager实现分页效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、数据库表U
2023-06-29

Android基于ListView实现类似Market分页加载效果示例

本文实例讲述了Android基于ListView实现类似Market分页加载效果。分享给大家供大家参考,具体如下: 最近几天研究ListView实现分页加载和滚动加载,发现可以用listView的OnScroll方法来实现,直接上代码 Li
2022-06-06

Java怎么使用Queryable-pageable实现分页效果

这篇“Java怎么使用Queryable-pageable实现分页效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录