在使用null引用传递参数对象时,我遇到了JdbcTemplate的问题。
鉴于我有以下测试数据:
jdbcTemplate.execute("INSERT INTO TEST_TABLE VALUES (1,'TEST')");
jdbcTemplate.execute("INSERT INTO TEST_TABLE VALUES (2,'TEST_2')");
jdbcTemplate.execute("INSERT INTO TEST_TABLE VALUES (3, NULL)");
以下代码不会检索任何内容:
String contentArg = null;
List<Entity> entityList_3 = jdbcTemplate.query("SELECT * FROM TEST_TABLE WHERE CONTENT = ?", new BeanPropertyRowMapper<>(Entity.class), contentArg);
有没有办法解决这个问题,只需使用JdbcTemplate。
使用Oracle NVL函数支持可选参数:
WHERE CONTENT = NVL(?, CONTENT) "
我已经能够通过修改查询来解决这个问题。
在我的情况下,我使用IBM solidDb并且修复包含使用IFNULL函数。
AND IFNULL(CONTENT,'') = IFNULL(?,'')