Java JDBI `SqlQuery` 是否具有对 SQL `=` AND SQL `IS NULL` 的惯用支持?

问题描述

让我们进行一个简单的 SELECT 查询

@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。处理这种查询最惯用的方式是什么?

解决方法

有两种选择:

  1. 将 SQL 查询重写为如下所示:
SELECT * FROM mytable
WHERE (:myVar is null and some_column is null) or some_column = :myVar
  1. 使用 JDBI templating 动态重写查询