JPA实现Bootstrap table分页、排序与模糊查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haoyuexihuai/article/details/80184852

自己实现Bootstrap table的分页、排序与模糊查询功能

要点
1.前台js需要在初始化bootstrapTable时,设置需要传递的参数

queryParamsType : "undefined",
queryParams: function queryParams(params) {   //设置查询参数,都是可以自动从控件获得
    var param = {
        pageNumber: params.pageNumber,
        pageSize: params.pageSize,
        search : params.searchText,
        sortName : params.sortName,
        sortOrder : params.sortOrder,
    };
    return param;
},

//其他主要参数
pageNumber: 1, //初始化加载第一页,默认第一页
pageList: [1,2,5,10], //每页的记录行数(*)
search: true,  //显示查询框
sidePagination: 'server',  //服务端分页
pagination: true, //是否显示分页(*)

需要排序的列在columns里的列设置sortable

{
    field: 'money',
    title: '价格',
    sortable: true,
}

后台实现数据展示的ajax

/**
 * 获取所有套餐
 * @return
 */
@RequestMapping(value = "/packagesPageAjax.ajax")
@ResponseBody
private  HashMap<String, Object> JSONArray(HttpServletRequest request) {
    //jpa默认从0开始
    int pageNumber =  Integer.parseInt(request.getParameter("pageNumber"))-1;
    int pageSize = Integer.parseInt(request.getParameter("pageSize"));
    String search = request.getParameter("search");
    String sortName = request.getParameter("sortName");
    String sortOrder = request.getParameter("sortOrder");

    //按照要求定义一个HashMap作为返回json的格式
    HashMap<String, Object> json=new HashMap<String, Object>();
    Sort sort = null;
    if(sortName==null){
        sort = new Sort(Sort.Direction.ASC, "id");
    }else{
        if(sortOrder.equals("asc")){
            sort = new Sort(Sort.Direction.ASC, sortName);
        }else{
            sort = new Sort(Sort.Direction.DESC, sortName);
        }
    }

    Pageable pageable= new PageRequest(pageNumber,pageSize,sort);
    if(search.equals("")||search==null){
        json.put("total", packagesService.findAll(pageable).getTotalElements());
        json.put("rows", packagesService.findAll(pageable).getContent());
    }
    else{
        json.put("total", packagesService.findByMoneyLikeOrCountLikeOrTypeLike(search,search,search,pageable).getTotalElements());
        json.put("rows", packagesService.findByMoneyLikeOrCountLikeOrTypeLike(search,search,search,pageable).getContent());
    }

    //json格式要求total与rows两个值
    //可以看到官网使用的格式http://issues.wenzhixin.net.cn/examples/bootstrap_table/data
    return json;
}

主要几个包

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

MongoRepository定义的方法

public interface PackagesRepository extends MongoRepository<Packages,String> {
//Packages为实体类
//使用分页,返回值类型要为Page,使用List返回值,前台分页会有问题
//有几个查询字段,就要穿相应个数的参数,同时jpa的方法都可以实现Pageable分页
    public Page<Packages> findByMoneyLikeOrCountLikeOrTypeLike(String money,String count,String type,Pageable pageable);
}

其他的按照正常分层写就可以了

实现效果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/haoyuexihuai/article/details/80184852