我的班级
class PgFolder {
long id;
int[] pgFeature;
}
getter...
setter...
我的table
CREATE TABLE folder {
ID BIGSERIAL PRIMARY KEY,
feature INT[]
}
我的xml
<insert id="insertManyFolder" parameterType="java.util.List">
INSERT INTO
folder
(feature)
VALUES
<foreach collection="list" item="item" index="" separator=",">
(#{item.pgFeature})
</foreach>
</insert>
我想插入一个 List<PgFolder>
列表。列表中有许多pgfolder示例。当我运行程序时,出现了一个错误:
org.apache.ibatis.exceptions.persistenceexception:
更新数据库时出错。原因:java.lang.illegalstateexception:属性“\uu frch\u item\u 0.pgfeature”的参数Map上的类型处理程序为null。没有为javatype(java.util.list):jdbctype(null)组合指定和/或找不到它。
原因:java.lang.illegalstateexception:属性“\uu frch\u item\u 0.pgfeature”的参数Map上的类型处理程序为null。没有为javatype(java.util.list):jdbctype(null)组合指定和/或找不到它**
为什么我收到这个错误信息?如何正确插入数组值?如果我在postgres客户机中使用sql,我可以插入一个数组值。所以我安装的版本的postgres可以支持数组值。
1条答案
按热度按时间zazmityj1#
我将解释两种解决方案,即Map
Integer[]
属性和Mapint[]
财产。Map整数[]
在这种情况下,可以使用mybatis的内置
ArrayTypeHandler
.指定
typeHandler
在参数参考中是足够的。Mapint[]
作为内置
ArrayTypeHandler
可能无法使用基元数组,您可能必须编写自定义类型处理程序。例如然后在参数引用中指定类型处理程序。
用mybatis 3.5.5和pgjdbc 42.2.15测试。