问题描述
@sqlQuery("SELECT * FROM mytable WHERE some_column = :myVar")
List<MyObjects> getBySomeColumn(String myVar);
我想知道是否有类似上面的内容,但自动处理 IS NULL
和 =
:
@sqlQuery("SELECT * FROM mytable WHERE some_column <MAGIC_HERE> :myVar")
List<MyObjects> getBySomeColumn(String myVar);
... 可以运行:
SELECT * FROM mytable WHERE some_column IS NULL
或
SELECT * FROM mytable WHERE some_column = :myVar
... 取决于 myVar
是否为 null
。处理这种查询最惯用的方式是什么?
解决方法
有两种选择:
- 将 SQL 查询重写为如下所示:
SELECT * FROM mytable
WHERE (:myVar is null and some_column is null) or some_column = :myVar
- 使用 JDBI templating 动态重写查询