分页使用到的Page类

SELECT *  FROM student LIMIT FROM,TO

分页无非就是实现了上面这个SQL语句,首先获取查询条件,然后获得limit这里的From和To的值不就结束了
在数据库中做分页查询的时候,我们要想知道获取数据的起始位置和结束位置,就要知道每页显示的数据个数,我们可以根据数据总个数和每页显示的数据个数算出来总页数。

Page类

public class PageBean<T> (){

    // 1.当前页数 从页面获取
    private int currentPage;
    // 2.每页显示数据个数,赋初值或者setter获取
    private int currentCount;
    // 3.总条数,从数据库获取
    private int totalRecord;
    // 4.总页数,计算得到
    private int totalPage;
    // 5.每页的显示数据,数据库得到
    List<T> list = new ArrayList<>();

    getter()和setter()方法
}

SearchRequest类

public class SearchRequest {

    private Integer From;
    private Integer pageSize;
    //.....其他查询条件
    private String name;
    private String age;

    getter()和setter()方法
    }

Controller层

    @RequestMapping(value = "/Page.action")
    public @ResponseBody PageBean<> SearchRecordPage(SearchRequest searchRequest,PageBean pageBean) {
        //
        int totalRecord=service.getPageSize(searchRequest);     
        pageBean.setTotalRecord(totalRecord);
        pageBean.setTotalPage((int) Math.ceil((pageBean.getTotalRecord()*1.0)/pageBean.getCurrentCount()));

        //获取当前点击页面的数据(pageBean前台传错来一个页面显示多少条,和页码数)
        List<> list = service.getRecord(searchRequest,pageBean);    
        //返回前台数据
        pageBean.setList(list);
        return pageBean;

    }

Service的书写


    public List<T> getRecord(SearchRequest searchRequest, PageBean<ResultClassName> pageBean) {
        //数据库进行分页的方法searchrequest加入from 和to
        //当前页面
        int currentPage=pageBean.getCurrentPage();  
        //页面的显示个数
        int currentCount=pageBean.getCurrentCount();
        //根据页面算出数据库查询的起始位置
        int from=currentCount*(currentPage-1);
        //获取的数据个数
        int pageSize=currentCount;
        //将查询范围在查询条件里
        searchRequest.setFrom(From);
        searchRequest.setPageSize(pageSize);
        //根据以上条件返回目的对象
        pageBean.setList( Mapper.getRecord(searchRequest));
        return pageBean;    
    }

Sql的写法

    <select id="getRepairRecord" resultType="ResultClassName"
        parameterType="SearchRequest">
        SELECT *
        FROM 表名
        <where>
            <if test="name!=null and name!=''">
                and name=#{name}</if>
            <if test="age!=null and age!=''">
                and age=#{age}
            </if>
        </where>
         <if test="From!=null  and pageSize!=null">
            limit #{From},#{pageSize}
         </if>
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值