最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Mybatis實現(xiàn)分頁效果示例

 更新時間:2021年12月07日 15:32:36   作者:丹哥大弟子  
大家好,本篇文章主要講的是使用Mybatis實現(xiàn)分頁效果示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

一、創(chuàng)建分頁的工具類PageUti,存儲分頁所需要的五個數(shù)據(jù):pageIndex(當前頁碼),pageSize(每頁記錄條數(shù)),count(總記錄數(shù)),pageNum(總頁數(shù)),list(每一頁的內(nèi)容)。

/**
 * @param <T> 泛型類
 */
public class PageUtil<T> {
    //當前頁碼
    private int pageIndex;
    //每頁記錄數(shù)
    private int pageSize;
    //總記錄數(shù)
    private int count;
    //總頁數(shù)
    private int pageNum;
    //每一頁的內(nèi)容
    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的第一個參數(shù)=(當前頁碼-1)*每頁記錄數(shù)

<!--分頁,查詢當前頁的內(nèi)容-->
    <select id="getBooksPage" resultType="list" parameterType="map">
        select * from books limit #{pageIndex},#{pageSize}
    </select>
<!--查詢總記錄數(shù)-->
    <select id="getCount" resultType="int" parameterType="map">
        select count(*) from books
</select>

三、BooksServiceImpl.java:將limit需要的兩個參數(shù)存入map集合中,再將分頁所需要的五個數(shù)據(jù)封裝。

public PageUtil<Books> getBooksPage(int pageIndex, int pageSize) {
        PageUtil<Books> pageUtil=new PageUtil<>();
        SqlSession sqlSession= MybatisUtil.getSqlSession();
        try {
            //booksMapper是使用動態(tài)代理模式,運行反射機制,創(chuàng)建的一個代理對象
            BooksMapper booksMapper=sqlSession.getMapper(BooksMapper.class);
            Map map=new HashMap();
            int row=booksMapper.getCount(map);
            //計算總頁數(shù)
            int pageCount= (int) Math.ceil((double) row / pageSize);
            //limit的第一個參數(shù)=(當前頁碼-1)*每頁記錄數(shù)
            map.put("pageIndex",(pageIndex - 1) * pageSize);
            map.put("pageSize", pageSize);
            List<Books> list=booksMapper.getBooksPage(map);
            //將數(shù)據(jù)封裝
            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條數(shù)據(jù)
        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;
 
    // 加載主配置文件,并創(chuàng)建 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();
    }
}

到此這篇關(guān)于使用Mybatis實現(xiàn)分頁效果示例的文章就介紹到這了,更多相關(guān)Mybites實現(xiàn)分頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java類初始化時機測試方法解析

    Java類初始化時機測試方法解析

    這篇文章主要介紹了Java類初始化時機測試過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • mybatis 字段名自動轉(zhuǎn)小寫的實現(xiàn)

    mybatis 字段名自動轉(zhuǎn)小寫的實現(xiàn)

    這篇文章主要介紹了mybatis 字段名自動轉(zhuǎn)小寫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    在SpringBoot中,可以通過@EnableAsync注解來啟動異步方法調(diào)用的支持,通過@Async注解來標識異步方法,讓方法能夠在異步線程中執(zhí)行,本文就來介紹一下,感興趣的可以了解一下
    2023-11-11
  • 詳解Java內(nèi)存管理中的JVM垃圾回收

    詳解Java內(nèi)存管理中的JVM垃圾回收

    這篇文章給大家分享了關(guān)于Java內(nèi)存管理中的JVM垃圾回收的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2018-08-08
  • 從零開始:快速入門SpringBoot注解的精髓

    從零開始:快速入門SpringBoot注解的精髓

    Spring?Boot是一個用于快速構(gòu)建基于Spring框架的應(yīng)用程序的開源框架,它通過使用注解來簡化配置和開發(fā)過程,使開發(fā)人員能夠更加專注于業(yè)務(wù)邏輯的實現(xiàn),Spring?Boot提供了許多注解,用于定義和配置應(yīng)用程序的各個方面,需要的朋友可以參考下
    2023-10-10
  • java設(shè)計模式--橋接模式詳解

    java設(shè)計模式--橋接模式詳解

    這篇文章主要為大家詳細介紹了java設(shè)計模式之橋接模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph?是一款開源的、分布式的、易擴展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下
    2022-10-10
  • Java關(guān)于IO流的全面介紹

    Java關(guān)于IO流的全面介紹

    下面小編就為大家?guī)硪黄狫ava關(guān)于IO流的全面介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • MyBatis查詢?、修改?、刪除操作示例代碼

    MyBatis查詢?、修改?、刪除操作示例代碼

    MyBatis?作為一款靈活的持久層框架,提供了直接編寫?SQL?語句的能力,避免了其他?ORM?框架可能帶來的性能和功能限制,本文介紹?MyBatis?中如何高效執(zhí)行這三種操作,并通過代碼示例展示最佳實踐,感興趣的朋友一起看看吧
    2024-08-08
  • 淺析Java getResource詳細介紹

    淺析Java getResource詳細介紹

    這篇文章主要介紹了Java getResource 講解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論

万宁市| 长乐市| 绿春县| 新津县| 福海县| 宣武区| 昭通市| 满城县| 明光市| 梧州市| 黄山市| 漳平市| 安徽省| 新巴尔虎左旗| 万盛区| 永新县| 弥渡县| 治县。| 通榆县| 金湖县| 木里| 瑞昌市| 涿州市| 肥城市| 永顺县| 区。| 崇仁县| 东城区| 萝北县| 宣威市| 临泽县| 综艺| 志丹县| 无为县| 图木舒克市| 文登市| 京山县| 信阳市| 资中县| 济宁市| 保康县|