传递带有空引用的参数对象时,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。
答案 0 :(得分:0)
使用Oracle NVL函数支持可选参数:
WHERE CONTENT = NVL(?, CONTENT) "
答案 1 :(得分:0)
我已经能够通过修改查询来解决此问题。
就我而言,我使用的是IBM solidDb,而该修复程序包含使用IFNULL函数。
AND IFNULL(CONTENT,'') = IFNULL(?,'')