SimpleJdbcCall参数未将null作为NULL值插入

时间:2015-03-02 14:01:35

标签: java mysql spring jdbc

我在MySql数据库中调用存储过程

CREATE PROCEDURE `sp_1` (IN in_param1 VARCHAR(255))
BEGIN
    INSERT INTO t_1 (field1) VALUES (in_param1);
END
带有SimpleJdbcCall对象的

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource);
jdbcCall.withoutProcedureColumnMetaDataAccess();
jdbcCall.withProcedureName(procedureName);

String paramValue = "new value";

MapSqlParameterSource map = new MapSqlParameterSource();
jdbcCall.addDeclaredParameter(new SqlParameter(Types.VARCHAR));
map.addValue("in_param1", paramValue, Types.VARCHAR);

SqlParameterSource sqlParameterSource = map;

jdbcCall.execute(sqlParameterSource);

除非paramValue变量为null:

,否则它可以正常工作
String paramValue = null;

在这种情况下,该字段在数据库中具有“null”文本而不是NULL值。

有没有人知道如何创建参数以向数据库发送真正的NULL值?

提前致谢!!

1 个答案:

答案 0 :(得分:2)

尝试

map.addValue("in_param1", paramValue, Types.NULL);