我想使用构造函数MapSqlParameterSource创建一个参数列表,它将地图作为输入。
唯一的问题是我不知道如何编写一个地图,它不仅会告诉MapSqlParameterSource ID和Value,还会告诉SqlType。
id = 1
desc = "Description"
insertSql = "INSERT INTO table(id,desc) VALUES (:idCode,:descCode)"
SqlParameterSource mapParam = new MapSqlParameterSource([idCode: id, descCode: desc])
通过这种方式,我可以创建SqlParameterSource,但我无法直接指定SqlTypes,并且我在其中一个测试中遇到了异常:
oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java:950)
oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java:623)
oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1212)
oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java:28)
oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:68)
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3140)
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3042)
oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:6022)
我假设无法找到SqlType的手段。你是否同意我的假设?你有一个不是这样的解决方案吗?
mapParam = new MapSqlParameterSource()
mapParam.addValue("idCode", stock, Types.NUMBER)
mapParam.addValue("descCode", stockType, Types.VARCHAR)
答案 0 :(得分:2)
尝试使用SqlParameterValue(int sqlType, Object value) constructor
将值包装在SqlParameterValue对象中