在用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