我想知道在使用 mybatis 和 spring 集成时转换方法参数的最佳方法是什么。转换的原因可能有多种原因 - 例如 mybatis 无法将 java.util.Set 处理为参数输入。
具体来说,假设我有一个 DAO 接口方法:
List<Foo> getFooForUniqueIds(Set<Long> ids);
和相应的 XML 为:
<select id="getFooForUniqueIds" parameterType="java.util.Set" resultMap="foo">
SELECT f.*
FROM foo f
WHERE f.id IN <foreach collection="list" item="item" separator="," close=")" open="(">
#{item}
</foreach>
</select>
我需要一种将其转换Set<Long> ids
为List<Long> ids
mybatis XML 片段可以解释的方法。我知道我们可以提供一个直接处理 SqlSessionFactory 的具体类,但我喜欢 Spring 集成提供的抽象,我不担心获取会话和关闭它们等无趣的东西。
有人可能还会争辩说 DAO 应该是愚蠢的,并且可能转换应该发生在服务层。但是,这种情况下的转换是由于映射器框架的细微差别,服务层采取了一些措施来抵消它,这似乎是不正确的。
欢迎提出建议并提前致谢!