使用饿汉式实现基于缓存的数据分页查询

优点:基于缓存查的更快,无需次次访问数据库,查询开销低。

缺点:当多个用户使用此方法进行条件查询时,查询的结果会冲突,但如果只是分页查看所有数据,并不会冲突,同时牺牲了空间,占用了内存,当数据量过大时不建议使用。

用到的实体类:

import lombok.Data;

@Data
public class UserInformation {

    private Consumer consumer;
    private User user;

}
import lombok.Data;

@Data
public class Consumer {

    private int id;
    private String userName;
    private String userCode;
    private String level;
    private int creditworthiness;
    private double totalIncome;
    private String identityCard;
    private String contact;
    private String address;
    private String authenticationInformation;
    private String cooperationWay;
    private String bankCard;
    private String date;

}
import lombok.Data;

@Data
public class User {

    private int id;
    private String userCode;
    private String passWord;
    private String registerCode;
    private String admin;
    private int userRole;
    private String state;

}

分页实现:


import com.management.novel.pojo.UserInformation;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;

@Data
public class UserPageInfo {

    private static UserPageInfo userPageInfo = new UserPageInfo();
    private int pageNum;
    private int pages;
    private int total;
    private int firstPage=1;
    private int prePage;
    private int nextPage;
    private int lastPage;
    private int page;
    private List<UserInformation> list;


    private UserPageInfo(){

    }

    public static UserPageInfo getUserPageInfo(){
        return userPageInfo;
    }

    public void setPageInfo(int pageNum, List<UserInformation> list) {
        this.pageNum = pageNum;
        this.list = list;
        this.total = list.size();
        if(this.total % this.pageNum > 0){
            this.pages = this.total/this.pageNum + 1;
        }else {
            this.pages = this.total/this.pageNum;
        }
        this.lastPage = this.pages;
    }

    public List<UserInformation> getPageInfo(int page){
        this.page=page;
        this.prePage=this.page-1;
        this.nextPage=this.page+1;
        if (this.prePage<=0)     this.prePage=this.page;
        if (this.nextPage>pages)    this.nextPage=this.page;

        List<UserInformation> results = new ArrayList<>();

        for (int i =  (this.page-1) * this.pageNum; i < this.page * this.pageNum && i < this.total; i++) {
            results.add(this.list.get(i));
        }

        return results;
    }

}

前端:

<div class="row">
    <!--分页文字信息  -->
    <div class="col-md-6" id="page_info_area">
         当前<span th:text="${pageInfo.page}"></span>页,
         总<span th:text="${pageInfo.pages}"></span>页,
         总<span th:text="${pageInfo.total}"></span>条记录
    </div>
    <!-- 分页条信息 -->
    <div class="col-md-6" id="page_nav_area">
         <ul class="pagination">
         <li><a th:href="'/admin/search/'+
                          ${keyTO}+'/'+
                          ${cooperationWaySelectTO}+'/'+
                          ${levelSelectTO}+'/'+
                          ${creditworthinessSelectTO}+'/'+
                          ${consumerStateSelectTO}+
                          '?pn='+${pageInfo.firstPage}">首页</a></li>
         <li><a th:href="'/admin/search/'+
                          ${keyTO}+'/'+
                          ${cooperationWaySelectTO}+'/'+
                          ${levelSelectTO}+'/'+
                          ${creditworthinessSelectTO}+'/'+
                          ${consumerStateSelectTO}+
                          '?pn='+${pageInfo.prePage}">&laquo;</a></li>
         <li><a th:href="'/admin/search/'+
                          ${keyTO}+'/'+
                          ${cooperationWaySelectTO}+'/'+
                          ${levelSelectTO}+'/'+
                          ${creditworthinessSelectTO}+'/'+
                          ${consumerStateSelectTO}+
                          '?pn='+${pageInfo.page}" th:text="${pageInfo.page}"> </a></li>
         <li><a th:href="'/admin/search/'+
                          ${keyTO}+'/'+
                          ${cooperationWaySelectTO}+'/'+
                          ${levelSelectTO}+'/'+
                          ${creditworthinessSelectTO}+'/'+
                          ${consumerStateSelectTO}+
                          '?pn='+${pageInfo.nextPage}">&raquo;</a></li>
         <li><a th:href="'/admin/search/'+
                          ${keyTO}+'/'+
                          ${cooperationWaySelectTO}+'/'+
                          ${levelSelectTO}+'/'+
                          ${creditworthinessSelectTO}+'/'+
                          ${consumerStateSelectTO}+
                          '?pn='+${pageInfo.lastPage}">末页</a></li>
        </ul>
    </div>
</div>

后端: 

    @RequestMapping("/users")
    public String getUsers( Model model,@RequestParam(value = "pn", defaultValue = "1")Integer pn){

        UserPageInfo page = UserPageInfo.getUserPageInfo();
        if(pn==1){
            List<UserInformation> list = userInformationService.getAllUserInformation();
            page.setPageInfo(10,list);
        }
        List<UserInformation> users = page.getPageInfo(pn);

        List<Select> cooperationWaySelect = selectService.getCooperationWaySelect();
        List<Select> levelSelect = selectService.getLevelSelect();
        List<Select> creditworthinessSelect = selectService.getCreditworthinessSelect();
        List<Select> consumerStateSelect = selectService.getConsumerStateSelect();

        model.addAttribute("cooperationWaySelects",cooperationWaySelect);
        model.addAttribute("levelSelects",levelSelect);
        model.addAttribute("creditworthinessSelects",creditworthinessSelect);
        model.addAttribute("consumerStateSelects",consumerStateSelect);
        model.addAttribute("pageInfo",page);
        model.addAttribute("users",users);

        return "admin-user-management";
    }

博客交流群:416424884

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值