本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Mybatis spring 转换参数

发布于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> idsList<Long> idsmybatis 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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)