将可选参数传递给JdbcTemplate

时间:2018-12-31 15:10:06

标签: java spring-jdbc

传递带有空引用的参数对象时,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。

2 个答案:

答案 0 :(得分:0)

使用Oracle NVL函数支持可选参数:

 WHERE CONTENT = NVL(?, CONTENT) "

答案 1 :(得分:0)

我已经能够通过修改查询来解决此问题。

就我而言,我使用的是IBM solidDb,而该修复程序包含使用IFNULL函数。

AND IFNULL(CONTENT,'') = IFNULL(?,'')