gpt4 book ai didi

java - MyBatis 集合转 Array 类型

转载 作者:行者123 更新时间:2023-11-30 10:33:44 24 4
gpt4 key购买 nike

MyBatis XML 映射器的以下代码应该将列“值”聚合到相应的数组中。

<resultMap id="cubeTextsHana" type="com.myDao">
<id property="attribute" column="attribute" javaType="String" />
<collection property="valueList" ofType="java.lang.String" javaType="String[]">
<result column="value" />
</collection>

不幸的是,这不起作用,因为 MyBatis 状态为 Class/TypeAlias 'String[]' not found. .当我改变 javaType="list"以及 DAO 中的相应类型,它工作正常。

有没有办法使用<collection>使用简单的数组类型(例如字符串)而不是集合类型?

最佳答案

resultMap 集合处理发生在 org.apache.ibatis.executor.resultset.DefaultResultSetHandler 类中

Java 数组不是集合(instantiateCollectionPropertyIfAppropriate(ResultMapping, MetaObject)) 然后没有方法添加 (linkObjects(MetaObject, ResultMapping, Object))

对于集合类型,在目标属性中设置集合的新实例,然后将所有结果添加到其中。属性指向有时(在 ArrayList 的情况下)扩展其内部数组的 Collection,实际上复制到更大的数组。而 java 数组是直接设置和指向的,每个新元素都是数组需要重新定义数组和重置属性。

所以我认为没有实现由 java 数组支持的结果映射集合,需要实现部分集合管理机制(这有什么意义?)

我想您可能会将结果映射到一个列表,如果需要,请对该属性调用 Collection#toArray()

关于java - MyBatis 集合转 Array 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com