Java 番石榴多图MyBatis
我想将其用作with,以返回一个包含多个一对多条目的集合的结果集,但我无法找出相同的确切语法。以下是我的表格示例:Java 番石榴多图MyBatis,java,guava,mybatis,spring-mybatis,Java,Guava,Mybatis,Spring Mybatis,我想将其用作with,以返回一个包含多个一对多条目的集合的结果集,但我无法找出相同的确切语法。以下是我的表格示例: +----+---------+----------+-------------+ | ID | PART_ID | NAME | PART_FAMILY | +----+---------+----------+-------------+ | 1 | 1 | bush | 300 | | 2 | 1 | a-bush
+----+---------+----------+-------------+
| ID | PART_ID | NAME | PART_FAMILY |
+----+---------+----------+-------------+
| 1 | 1 | bush | 300 |
| 2 | 1 | a-bush | 300 |
| 3 | 1 | 300-bush | 300 |
| 4 | 2 | nut | 301 |
+----+---------+----------+-------------+
我想要一个结果集,这样我就有一个番石榴多重映射,其中PART_ID作为键,NAME和PART_FAMILY作为结果
Ex:
Index 0 :
Key : 1 //PART_ID
Value : [NAME: bush, PART_FAMILY: 300]
Index 1 :
Key : 1
Value : [NAME: a-bush, PART_FAMILY: 300]
Index 2 :
Key : 1
Value : (NAME: 300-bush, PART_FAMILY: 300)
Index 3 :
Key : 2
Value : (NAME: nut, PART_FAMILY: 301)
以下是我的疑问:
<resultMap id="partsMap" type="com.google.common.collect.Multimap">
<id column="PART_ID" property="key" />
//Not sure what to put here
</resultMap>
<select id="getParts" resultMap="partsMap">
SELECT
PART_ID, NAME, PART_FAMILY
FROM PART_NAMES
WHERE ${filter}
ORDER BY PART_ID
</select>
//不知道该在这里放什么
挑选
零件ID、名称、零件族
从第四部分开始
其中${filter}
按零件号订购
我需要以下几点帮助:
提前谢谢 你试过了吗?可以吗?@Eugene,是的,我试过了,它抛出了以下异常:查询数据库时出错。原因:org.apache.ibatis.reflection.ReflectionException:使用无效类型()或值()实例化接口com.google.common.collect.Multimap时出错。原因:java.lang.NoSuchMethodException:com.google.common.collect.Multimap。()好的,显然mybatis正试图通过默认构造函数初始化
Multimap
,而默认构造函数显然不存在。多重映射仅在创建时或通过构建器填充,因为它们是不可变的。我认为您唯一的选择是创建一个Map
,然后使用一些工厂方法来创建一个MultiMap
。@OlivierGrégoire,我可以扩展MultiMap,提供一个构造函数,然后使用这个新类吗?当然可以!对于该用例,您可能应该使用ForwardingMultimap
。这样,您只需定义以下内容:public类MyMultimap扩展ForwardingMultimap{private Multimap delegate=HashMultimap.create();public MyMultimap(){}@Override public Multimap delegate(){return delegate;}
。不过,我实在帮不上忙。