繁体   English   中英

Java HashMap中的绑定空值

[英]Binding Nulls in Java HashMap

我正在制作一个参数输入表来查询审计表。 不需要输入。

下面的SQL查询(我想要Java解析)可以完美地工作。 它根据输入返回我想要的行。

SELECT *
FROM _audit
WHERE DATEDIFF(NOW(), `_audit_timestamp`) < 30
      AND (('smith' <> '' AND _action__user = 'smith')
           OR (_action__user = _action__user AND 'smith' IS NULL))
      AND ((NULL IS NOT NULL AND _action_searchkey IS NULL)
           OR (_action_searchkey = _action_searchkey OR _action_searchkey IS NULL))
      AND ((NULL IS NOT NULL AND _action_customer IS NULL)
           OR (_action_customer = _action_customer AND _action_customer IS NULL))
ORDER BY _audit_timestamp DESC

但是,当我尝试使其在Java中运行时,它根本不返回任何行。 我认为这与地图中的值有关。 在调试器中查看它们,它显示“”而不是NULL

    String sqlText = "SELECT * "
            + "       FROM _audit "
            + "       WHERE DATEDIFF(NOW(), `_audit_timestamp`) < :days "
            + "       AND ((:Name IS NOT NULL AND _action__user = :Name) "
            + "           OR (_action__user = _action__user AND :Name IS NULL)) "
            + "       AND ((:SearchKey IS NOT NULL AND _action_searchkey = :SearchKey) "
            + "             OR (_action_searchkey = _action_searchkey AND :SearchKey IS NULL)) "
            + "       AND ((:Customer IS NOT NULL AND _action_customer = :Customer) "
            + "           OR (_action_customer = _action_customer AND :Customer IS NULL)) "
            + "       ORDER BY _audit_timestamp DESC";

    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("days", aqForm.getDays().toString());
    parameters.put("Name", aqForm.getName());
    parameters.put("SearchKey", aqForm.getSearchKey());
    parameters.put("Customer", aqForm.getCustomer());

我在这里树错树了吗?

在查询中将`替换为'并尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM