Spring JDBC FOUND_ROWS 安全吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JDBC FOUND_ROWS 安全吗?相关的知识,希望对你有一定的参考价值。

在很多分页的程序中都这样写:

SELECT COUNT(*) from `table` WHERE ......;  查出符合条件的记录总数
SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据
这样的语句可以改成:
SQL1:SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ......  limit M, N;
SQL2:SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数,但是这样的处理我担心是不安全的【猜测,未验证】:
在连接池的情况下,当SQL1 执行结束后,如果迅速将SQL2中的缓冲值取走,基本是正确的,但是如果此时有其他进程取走这个中间结果,那显然,SQL2查询的结果就不正确。
所以,方案1比方案2安全?容我有空再验证下。

以上是关于Spring JDBC FOUND_ROWS 安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

jdbc spring 安全性,apache commons dbcp

无法在 Spring Boot 中使用 JDBC 身份验证创建安全连接

如何在具有 JDBC 安全性的 Spring Boot 中使用 Flyway?

Spring Security JDBC 和 Hibernate JPA

即使没有返回行,MySQL/MariaDB FOUND_ROWS 也会返回 1

MySQL FOUND_ROWS() 方法的 SQL 等效项是啥?