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

  • 相关阅读:
    MySQL-percona安装
    Oracle-19C PSU升级
    Oracle-内存管理机制
    学习进度第十二周
    十天冲刺10
    单词统计续
    十天冲刺9
    学习进度第十一周
    十天冲刺8
    十天冲刺7
  • 原文地址:https://www.cnblogs.com/skyvalley/p/15543123.html
Copyright © 2011-2022 走看看