第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

基于后端JFinal框架手動(dòng)分頁(yè)

標(biāo)簽:
Java

之前项目做的数据分页处理都是直接调用Hibernate,MyBatis的分页插件和自带的分页处理,这一次我想自己写分页类和分页逻辑,后端用的是JFinal框架,做个笔记记录一下:

1. 首先看一下分页类:Page<T>的代码:

public class Page<T> {

    private int currentPage;    //当前页数
    private int totalPage;  //总页数
    private int total;  //总记录数
    private int pageSize;   //每页记录数
    public int nextPage;      //下一页
    private int prePage;        //上一页
    private List<T> pageList;   //当前页数据

    public Page() {

    }

    public Page(int currentPage, int pageSize) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getTotalPage() {
        if (total % pageSize == 0) {
            return total / pageSize;
        }
        return total / pageSize + 1;
    }

    public int getNextPage() {
        if (currentPage < getTotalPage()) {
            nextPage = currentPage + 1;
        } else {
            nextPage = currentPage;
        }
        return nextPage;
    }

    public int getPrePage() {
        if (currentPage > 1) {
            prePage = currentPage - 1;
        } else {
            prePage = currentPage;
        }
        return prePage;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public List<T> getPageList() {
        return pageList;
    }

    public void setPageList(List<T> pageList) {
        this.pageList = pageList;
    }

}

2. 接着我们来看一下Service层获取分页数据的处理:

public class TestService {

    private static final Test testDao = new Test().dao();

    public Page<Test> getPageList(int pageNum, String keyWord) {
        Page<Test> testList = new Page<Test>();
        int total = testDao.find("select * from test").size();
        testList.setTotal(total);   //总记录数
        testList.setPageSize(5);   //每一页数据
        testList.setCurrentPage(pageNum);   //查询页数
        int beginNum = (pageNum - 1) * 5;   //开始记录数
        String userName = "'%" + keyWord + "%'";
        //调用JFinal框架封装的查询方法
        List<Test> pageList = testDao.find("select * from test where name like " + userName + " limit ?, ?", beginNum, 5);
        testList.setPageList(pageList);
        return testList;
    }

}

3. 然后就是Controller层的返回数据的方法:

public class TestController extends Controller {

    static TestService testService = new TestService();

    //分页查询
    public void pageList() {
        //getPara()方法接收前端的查询参数,没有查询关键字默认为空字符串
        String keyWord = getPara("keyWord", "");
        //getParaToInt()方法接收前端int类型的页数,没有则默认为第一页
        int pageNum = getParaToInt("pageNum", 1);
        Page<Test> testList = testService.getPageList(pageNum, keyWord);
        //setAttr方法是JFinal框架封装的传递参数给前端的方法,底层实现是 request.setAttribute(name, value)
        //这里还要返回搜索的关键字给前端,要保留关键字在输入框里面
        setAttr("keyWord", keyWord);
        setAttr("testList", testList);
        //返回视图
        render("testList.html");
    }

}

4. 最后就是展示数据的HTML的页面了:

<form action="/test/pageList" method="post">
    <input type="text" name="keyWord" value="#(keyWord)" />
    <input type="submit" value="查询" />
</form>
<table id="table" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>地址</td>
    </tr>
    #for(test : testList.pageList)
    <tr>
        <td>#(test.name)</td>
        <td>#(test.age)</td>
        <td>#(test.address)</td>
    </tr>
    #end
</table>
<p>
    每页显示#(testList.pageSize)条记录,共#(testList.total)条记录,当前第#(testList.currentPage)页
    <a href="/test/pageList?pageNum=1&keyWord=#(keyWord)">首页</a>
    <a href="/test/pageList?pageNum=#(testList.prePage)&keyWord=#(keyWord)">前一页</a>
    <a href="/test/pageList?pageNum=#(testList.nextPage)&keyWord=#(keyWord)">下一页</a>
    <a href="/test/pageList?pageNum=#(testList.totalPage)&keyWord=#(keyWord)">尾页</a></td>
</p>

5. 最后就大功告成了,这个分页的逻辑和思路应该是很清晰得了!

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消