zoukankan      html  css  js  c++  java
  • hibernate用Query.setFirstResult和Query.setMaxResults分页时,传入的manresults不能为0,否则解析后的sql会去查全表数据

    在用hibernate框架进行分页查询时,发现当query.setMaxResults(0)时,即设置为0时,会查全表的数据

    打开hibernate输出sql的功能,发现当设置不为0时,解析出来的sql语句的格式如下(tempResuts就代表着主体查询sql)

        select
            * 
        from
            ( select
                row_.*,
                rownum rownum_ 
            from
                ( tempResults) row_ 
            where
                rownum <= ?
            ) 
        where
            rownum_ > ?

    而当设置为0时,解析出来的sql语句格式如下(tempResuts就代表着主体查询sql)

    tempResults

    是的,没错,当设置为0时,hibernate解析出来的sql没有进行分页处理,而是直接主体查询sql进行了查询,就会导致查全表的数据了

    因此,需要对前端传过来的参数进行校验,不能让其传0

  • 相关阅读:
    PHP 之sha256 sha512封装
    PHP 之中文转为拼音
    Redis 之仿微博demo
    PHP操作Redis相关函数
    存储过程和变量
    视图
    查询
    约束
    基础一
    轮播图--JS手写
  • 原文地址:https://www.cnblogs.com/skyvalley/p/15543123.html
Copyright © 2011-2022 走看看