春の統合で mybatis を使用する場合、メソッドのパラメーターを変換する最良の方法は何かを知りたいと思いました。変換の理由には、さまざまな理由が考えられます。たとえば、mybatis が java.util.Set を param 入力として処理できないなどです。
具体的には、次のような 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>
をmybatis XML フラグメントが解釈できるに変換する方法が必要Set<Long> ids
です。List<Long> ids
SqlSessionFactory を直接処理する具体的なクラスを提供できることは理解していますが、Spring 統合が提供する抽象化が好きで、セッションの取得やセッションの終了などの興味深いこと以外について心配する必要はありません。
また、DAO は愚かであるべきであり、おそらく変換はサービス層で行われるべきだと主張する人もいるかもしれません。ただし、この場合の変換は、マッパー フレームワークのニュアンスが原因であり、サービス レイヤーがそれを相殺するために何かを行っているため、正しくないように見えました。
提案をお待ちしております。事前に感謝します。