zoukankan      html  css  js  c++  java
  • JPA自定义查询@Query分页

    关键字:countQuery

    持久层:

    @Query(value = "SELECT area_id,org_name,update_name,update_user,sum(success_count) AS success_count," +
                "sum(error_count) AS error_count,sum(all_call) AS all_call,sum(all_count) AS all_count FROM V_PHOTO_CALLBACK a " +
                "WHERE area_id=?1 AND end_time>=?2 AND end_time<=?3 GROUP BY area_id,org_name,update_name,update_user",
                countQuery = "select count(*) from (SELECT area_id,org_name,update_name,update_user,sum(success_count) AS success_count," +
                        "sum(error_count) AS error_count,sum(all_call) AS all_call,sum(all_count) AS all_count FROM tableName a " +
                        "WHERE area_id=?1 AND end_time>=?2 AND end_time<=?3 GROUP BY area_id,org_name,update_name,update_user)",
                nativeQuery = true)
        Page<PhotoCallback> query(String areaId, String beginTime, String endTime, Pageable pageable);

    服务层:


    @Override
    public Map<String,Object> query(String areaId, String beginTime, String endTime, Pageable pageable) { Map<String,Object> map = new LinkedHashMap<>(); int pageMin = pageable.getPageNumber() * pageable.getPageSize(); int pageMax = pageMin + pageable.getPageSize(); Pageable page = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.Direction.DESC, "update_user"); Page<PhotoCallback> all = photoCallbackRepository.query(areaId, beginTime, endTime, page); map.put("content",all.getContent()); map.put("totalElements",all.getTotalElements()); return map; }

    遇到的问题:

    1、手工分页,无查询总条数返回。使用Page<T> 、countQuery="select count(*) from ..."获得总条数

    2、当多表查询、嵌套查询时,Pageable使用遇到问题,总是会获取第一个表的别名为查询字段的前缀。(不建议使用:查询结果返回List,用subList截取结果)

    int fromIndex = pageable.getPageNumber() * pageable.getPageSize();
    int toIndex = fromIndex + pageable.getPageSize();
    maps.put("content", lists.subList(fromIndex, lists.size() > toIndex ? toIndex : lists.size()));
    maps.put("totalElements", lists.size());
    
    
    
  • 相关阅读:
    Radian快速启动程序——利用鼠标快速启动程序
    true launch bar 完美运行版——快速启动工具
    Executor – 快速调出你的程序
    还你清爽桌面!运行精灵软件(快速启动工具)试用测评
    运行精灵视频使用教程
    35个Google开源项目,你知道几个?
    日系精品快速启动程序软件——nrLaunch
    推荐一个快速启动工具——运行精灵(命令搜索型快速启动软件)
    《众智科学》:博弈
    山东大学2021算法期末试题
  • 原文地址:https://www.cnblogs.com/phpli/p/14200402.html
Copyright © 2011-2022 走看看