PageHelper只对紧跟着的第一条SQL起作用

Posted cryonmyshoulder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PageHelper只对紧跟着的第一条SQL起作用相关的知识,希望对你有一定的参考价值。

这个sql的中心思想就是根据查询到的schema然后分别查询schema中的相关数据再用union all将结果及拼接在一起。
LocServiceImpl.findAllLoc(Loc loc)
@Override
    public List<Loc> findAllLoc(Loc loc) 
        try 
            HashMap<String,Object> map = new HashMap<String,Object>();
            List<String> schemas = this.locMapper.findAllSchema(loc);//查询所有的schema
            map.put("schemas", schemas);
            map.put("loc", loc);
            return this.locMapper.findAllLoc(map);
         catch (Exception e) 
            e.printStackTrace();
            return new ArrayList<>();
        
    

//分页异常的代码的LocController中代码

@RequestMapping("loc/list")
    @ResponseBody
    public Map<String, Object> locList(QueryRequest request, Loc loc) 
        PageHelper.startPage(request.getPageNum(), request.getPageSize());
        List<Loc> list = this.locService.findAllLoc(loc);//具体实现在第一段代码。系统认为findAllSchema(loc)是第一条语句。PageHelper只对紧跟着的第一条SQL起作用

//        HashMap<String,Object> map = new HashMap<String,Object>();
//        List<String> schemas = this.locMapper.findAllSchema(loc);//        map.put("schemas", schemas);
//        map.put("loc", loc);
//        
//        PageHelper.startPage(request.getPageNum(), request.getPageSize());
//        List<Loc> list =  this.locMapper.findAllLoc(map);
        
        PageInfo<Loc> pageInfo = new PageInfo<>(list);
        return getDataTable(pageInfo);
    

 

//yml配置

#pagehelper
pagehelper: 
  helperDialect: oracle
  reasonable: false//这个熟悉需要改成false
  supportMethodsArguments: true
  params: count=countSql 

 //分页正常的LocController中代码,拆分开,然后把PageHelper放在需要分页的SQL之前,就正常了。

@RequestMapping("loc/list")
    @ResponseBody
    public Map<String, Object> locList(QueryRequest request, Loc loc) 
//        PageHelper.startPage(request.getPageNum(), request.getPageSize());
//        List<Loc> list = this.locService.findAllLoc(loc);

        HashMap<String,Object> map = new HashMap<String,Object>();
        List<String> schemas = this.locMapper.findAllSchema(loc);
        map.put("schemas", schemas);
        map.put("loc", loc);
        PageHelper.startPage(request.getPageNum(), request.getPageSize());//PageHelper只对紧跟着的第一条SQL起作用
        List<Loc> list =  this.locMapper.findAllLoc(map);//这条语句被视为紧跟着的第一条语句
        
        PageInfo<Loc> pageInfo = new PageInfo<>(list);
        return getDataTable(pageInfo);
    

 

以上是关于PageHelper只对紧跟着的第一条SQL起作用的主要内容,如果未能解决你的问题,请参考以下文章

ArrayList cannot be cast to com.github.pagehelper.Page

多表查询分页[多次查询]

MyBatis 使用PageHelper分页不起作用

选择基于重复项的第一条记录[重复]

与 GROUP BY 结合的第一条记录

sql按字段分组,并且找出每组的第一条数据