您当前的位置: 首页 >  ar

ITKEY_

暂无认证

  • 0浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Mybatis (ParameterType) 如何传递多个不同类型的参数

ITKEY_ 发布时间:2022-04-30 23:30:00 ,浏览量:0

在一些场景下,传参是需要多个参数的。一个参数不太够用,如:parameterType="ImGroup"

最开始的想法是封装一个专用用来当参数的对象,把多个对象包装到一起,这样就要以实现多个参数的传递。但是总感觉这样的方法太笨了,而且封装的对象有可能只能在参数这块用一下,重用性不高。还会导致项目中多一个类文件。

那么应该还可以使用map或者list封装对象。但是毕竟集合的可变性比较高,使用起来又没有类方便。

比起这些思路,我感觉注解的方式最方便。

基于注解
 public List selectImGroupListByUserId(@Param("userId")String userId, @Param("group") ImGroup imGroup);

去掉parameterType属性。 这里ImGroup 是一个对象,里面有一堆属性,比如:name


  select t.* from tableName where id = #{userId} and name = #{group.name}  
  

由于是多参数那么就不能使用parameterType, 这里用@Param来指定哪一个

我的实际代码如下 : ImGroupMapper.java

   /**
     * 通过UserId来查询
     * @param imGroup
     * @return
     */
    public List selectImGroupListByUserId(@Param("userId")String userId, @Param("group") ImGroup imGroup);

ImGroupMapper.xml

 
        select g.* from im_group_user gu left join im_group g on gu.group_id=g.group_id
        
            gu.user_id=#{userId}
             and g.user_count = #{group.userCount}
             and g.group_name like concat('%', #{group.groupName}, '%')
             and g.group_introduction = #{group.groupIntroduction}
             and g.group_portrait = #{group.groupPortrait}
             and g.group_owner = #{group.groupOwner}
             and g.group_manager = #{group.groupManager}
        
    
参考

https://developer.aliyun.com/article/650235

关注
打赏
1665243900
查看更多评论
立即登录/注册

微信扫码登录

0.0393s