如何使用 jOOQ 在所有 SQL 查询中注入条件

How to inject a condition in all SQL queries using jOOQ

我正在使用 jOOQ 生成我的 SQL 查询,我想知道是否有办法在我的应用程序执行的所有查询中注入条件。

例如,我想在应用程序执行的所有 SELECT 中包含类似 account = {accountNameHere} 的内容。由于我已经有大量不同的查询,因此我想在不向每个语句手动添加条件的情况下执行此操作。

有没有办法使用 jOOQ 轻松做到这一点?也许使用 VisitListener ?

是的,VisitListener 将是将自定义谓词注入所有 SELECT 语句(当然包括子查询)的最彻底的方法。事实上,您要查找的内容有时被称为 "row level security"(在 RDBMS 中原生支持,例如 Oracle or SQL Server)。

以下博客 post 解释了如何通过 VisitListener 实现此目的:

http://blog.jooq.org/2015/06/17/implementing-client-side-row-level-security-with-jooq