我正在使用informix,并且尝试使用spring从java执行一个简单查询。这是查询。
INSERT INTO table1
SELECT val1, val2, val3
FROM table2
WHERE condition
我已经验证了查询语法,并且如果使用客户端执行查询语法,则可以完美运行。但是当它使用NamedParameterJdbcTemplate
运行时会引发语法错误,我不知道为什么。有人可以向我解释原因和解决我的问题的好方法。
这是我的Java代码。
String LOG_INFO =
"INSERT INTO table1 SELECT val1, val2, (SYSDATE - 5 UNITS HOUR), val3 " +
" FROM table2 " +
" WHERE membership_nbr = :user_nbr_param";
String USER_NBR_PARAM = "user_nbr_param";
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;
public Integer logInfo(BigInteger userNbr) {
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(USER_NBR_PARAM, userNbr);
return jdbcTemplate.update(LOG_INFO, params);
}
[以Map
代替MapSqlParameterSource
来尝试:
public Integer logInfo(BigInteger userNbr) {
Map<String, Object> params = new HashMap<>();
params.put(USER_NBR_PARAM, userNbr);
return jdbcTemplate.update(LOG_INFO, params);
}
阅读本文章:why we use MapSqlParameterSource了解更多信息。