springboot+layui+jpa实现分页查询

最近做了个springboot项目,用到了分页,经过几天的浏览博客,终于有点头绪解决了分页的问题。希望能给大家带来帮助

目录

  1. 前台代码
  2. 后台代码

1、html层

<script  type="text/javascript" th:inline="none">
    layui.use(['table','layer','form','laydate'], function(){
        var table = layui.table;
        var layer = layui.layer;
        var form = layui.form;
        var laydate = layui.laydate;

        //方法级渲染
        table.render({
            elem: '#busTableId'//这里放的是表格的id
            ,url: 'http://localhost:8080/bookbus/orderList'
            ,cols: [
                [
                    {checkbox: true, fixed: true}
                    ,{field:'id', title: 'ID', width:180, sort: true, align:'center'}
                    ,{field:'startPoint', title: '起点', width:180, align:'center', edit: 'text'}
                    ,{field:'endPoint', title: '终点', width:100, align:'center', edit: 'text'}
                    ,{field:'startTime', title: '开始时间', width:100,sort: true, align:'center'}
                    ,{field:'endTime', title: '结束时间', width:104,sort: true, align:'center'}
                    ,{field:'price', title: '票价', width:124,sort: true, align:'center'}
                    ,{field:'amount', title: '数量',width:104,sort: true, align:'center',event: 'setSign', style:'cursor: pointer;'}
                    ,{width:136, title:'操作', align:'center', toolbar: '#barlist'}
                ]
            ]
            ,id:'testReload'
            ,limits:[5,10,15,20,25]
            ,height: 470
            ,page: true
        });

</script>

2、controller层

    /**
     * 分页查询订单信息
     * @param page
     * @param limit
     * @return
     */
    @ResponseBody
    @RequestMapping("/orderList")
    public Map<String,Object> orderList(@RequestParam(value="page",required=false)Integer page,@RequestParam(value="limit",required=false)Integer limit){
        Map<String,Object> resultMap=new HashMap<>();
        Map map=new HashMap();
        Page<BusOrder> pageList = bookBusService.findSearch(map, page, limit);
        resultMap.put("code", 0);
        resultMap.put("count", pageList.getTotalElements());
        resultMap.put("data", pageList.getContent());
        return resultMap;
    }

3、service层

  /**
     * 条件查询+分页
     * @param whereMap
     * @param page
     * @param size
     * @return
     */
    public Page<BusOrder> findSearch(Map whereMap, int page, int size) {
        Specification<BusOrder> specification = createSpecification(whereMap);
        PageRequest pageRequest =  PageRequest.of(page-1, size);
        return busDao.findAll(specification, pageRequest);
    }

/**
     * 动态条件构建
     * @param searchMap
     * @return
     */
    private Specification<BusOrder> createSpecification(Map searchMap) {

        return new Specification<BusOrder>() {

            @Override
            public Predicate toPredicate(Root<BusOrder> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicateList = new ArrayList<Predicate>();
                // id
                if (searchMap.get("id")!=null && !"".equals(searchMap.get("id"))) {
                    predicateList.add(cb.like(root.get("id").as(String.class), "%"+(String)searchMap.get("id")+"%"));
                }
                // 开始地点
                if (searchMap.get("startPoint")!=null && !"".equals(searchMap.get("startPoint"))) {
                    predicateList.add(cb.like(root.get("startPoint").as(String.class), "%"+(String)searchMap.get("startPoint")+"%"));
                }
                // 结束地点
                if (searchMap.get("endPoint")!=null && !"".equals(searchMap.get("endPoint"))) {
                    predicateList.add(cb.like(root.get("endPoint").as(String.class), "%"+(String)searchMap.get("endPoint")+"%"));
                }

                // 开始时间
                if (searchMap.get("startTime")!=null && !"".equals(searchMap.get("startTime"))) {
                    predicateList.add(cb.like(root.get("startTime").as(String.class), "%"+(String)searchMap.get("startTime")+"%"));
                }
                // 结束时间
                if (searchMap.get("endTime")!=null && !"".equals(searchMap.get("endTime"))) {
                    predicateList.add(cb.like(root.get("endTime").as(String.class), "%"+(String)searchMap.get("endTime")+"%"));
                }
                return cb.and( predicateList.toArray(new Predicate[predicateList.size()]));

            }
        };

    }

4、dao层,直接继承JPA接口即可,不用写,直接调用即可

   Page<T> findAll(@Nullable Specification<T> var1, Pageable var2);

实现分页效果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值