【发布时间】:2011-01-14 19:15:13
【问题描述】:
... 有没有一种简单的方法可以在 iBatis 的帮助下将 Java int[] 插入 PostgreSql? (旧的,不是新的 MyBatis)
不确定我是否需要自定义类型处理程序,但我很难找到可以说明正在发生的事情的代码示例。
提前致谢。
ps:
自最初发布以来,我能够从 DB 中读取数组并在域对象中填充 int[]。但还不能写入数据库:-(
所以在域模型中有:
int[] crap = null;
使用 getter 和 setter,自定义属性处理程序如下所示:
public class ArrayTypeHandler implements TypeHandlerCallback {
public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
if( parameter == null){
setter.setNull( Types.ARRAY);
} else {
setter.setArray( (Array) Arrays.asList(parameter ) );
}
}
public Object getResult(ResultGetter getter) throws SQLException {
Array array = getter.getResultSet().getArray(getter.getColumnName());
if( !getter.getResultSet().wasNull()){
return array.getArray();
} else { return null; }
}
public Object valueOf(String string) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
sqlMapConfig.xml:
<typeHandler javaType="java.sql.Array" jdbcType="ARRAY" callback="project.persistance.sqlmapdao.ArrayTypeHandler" />
尝试更新时出现以下错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];
---项目/persistance/sql_xml/Article.xml中出现错误。
--- 应用参数映射时发生错误。
--- 检查 updateArticle-InlineParameterMap.
--- 检查“废话”属性的参数映射。
--- 原因:java.lang.NullPointerException;嵌套异常是 com.ibatis.common.jdbc.exception.NestedSQLException:
--- 项目/persistance/sql_xml/Article.xml中出现错误。
--- 应用参数映射时发生错误。
--- 检查 updateArticle-InlineParameterMap.
--- 检查“废话”属性的参数映射。
--- 原因:java.lang.NullPointerException
...关于我缺少什么的任何提示? 谢谢
===
...我一直努力到 ClassCastExceptiong :-)
尝试设置属性:
public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
int[] c = (int[]) parameter;
setter.setArray( (java.sql.Array) c );
}
...以及随之而来的异常:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];
---项目/persistance/sql_xml/Article.xml中出现错误。
--- 应用参数映射时发生错误。
--- 检查 updateArticle-InlineParameterMap.
--- 检查“废话”属性的参数映射。
--- 原因:java.lang.ClassCastException: java.util.ArrayList;嵌套异常是 com.ibatis.common.jdbc.exception.NestedSQLException:
--- 项目/persistance/sql_xml/Article.xml中出现错误。
--- 应用参数映射时发生错误。
--- 检查 updateArticle-InlineParameterMap.
--- 检查“废话”属性的参数映射。
--- 原因:java.lang.ClassCastException: java.util.ArrayList
...不过我今天已经吃过了。 谢谢
【问题讨论】:
-
您要在一行还是多行中插入
int[]? -
一行,col类型为整数[]
标签: java postgresql ibatis