SimpleJdbcCall 参数不将 null 作为 NULL 值插入
SimpleJdbcCall parameters not inserting null as NULL value
我正在 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
变量为空:
String paramValue = null;
在这种情况下,该字段具有 "null" 文本而不是数据库中的 NULL 值。
有人知道我必须如何创建参数才能将真正的 NULL 值发送到数据库吗?
提前致谢!!
尝试
map.addValue("in_param1", paramValue, Types.NULL);
我正在 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
变量为空:
String paramValue = null;
在这种情况下,该字段具有 "null" 文本而不是数据库中的 NULL 值。
有人知道我必须如何创建参数才能将真正的 NULL 值发送到数据库吗?
提前致谢!!
尝试
map.addValue("in_param1", paramValue, Types.NULL);