发布于2025-01-07 22:01 阅读(15) 评论(0) 点赞(10) 收藏(4)
我想知道在使用 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 应该是愚蠢的,转换可能应该发生在服务层。但是,在这种情况下,转换是由于映射器框架的细微差别,而服务层采取一些措施来抵消它似乎是不正确的。
欢迎提出建议并提前致谢!
这里的具体示例可以通过 @Param 提供参数名称(而不是假设它是“列表”)并在 XML 中使用该参数名称来解决。
List<Foo> getFooForUniqueIds(@Param("set") Set<Long> ids);
XML 为
<select id="getFooForUniqueIds" parameterType="java.util.Set" resultMap="foo">
SELECT f.*
FROM foo f
WHERE f.id IN <foreach collection="set" item="item" separator="," close=")" open="(">
#{item}
</foreach>
</select>
参考:https ://groups.google.com/forum/?fromgroups=#!topic/mybatis-user/BGjvVw1xx_c
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/694774/3a571ec87382d2a0475a/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!