mybatis同时传入List/数组和实体类参数

UserMapper.java

void updateByIds(@Param("ids") List<String> ids,@Param("user") User user);

UserMapper.xml

<update id="updateByIds">
    update <include refid="Table_Name"/>
    <trim prefix="set" suffixOverrides=",">
        <if test="user.userId!=null">
            user_id= #{user.userId},
        </if>
        <if test="user.userName!= null and user.userName!= ''">
            user_name = #{user.userName},
        </if>
    </trim>
    where id in
    <foreach collection="ids" separator="," open="(" close=")"
             item="item">
        #{item}
    </foreach>
</update>
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 中,可以很方便地通过传入 List 集合作为条件来查询数据。具体实现方式如下: 假设有一个实体类 User,其中有一个属性为 name,现在需要查询 name 在某个 List 中的所有 User。可以编写下面的 SQL 语句: ``` SELECT * FROM User WHERE name IN <foreach item="item" collection="list" open="(" separator="," close=")"> #{item} </foreach> ``` 这里使用了 MyBatis 的 foreach 标签,将 List 中的元素一个一个地遍历,并将其作为参数传入 SQL 语句中。其中,item 属性指定了遍历过程中的变量名,collection 属性指定了要遍历的集合,open 属性指定了集合开始时的字符串,separator 属性指定了元素之间的分隔符,close 属性指定了集合结束时的字符串。 在 Java 代码中,可以这样调用: ``` List<String> nameList = new ArrayList<>(); nameList.add("Tom"); nameList.add("Jerry"); List<User> userList = sqlSession.selectList("userMapper.selectByNameList", nameList); ``` 这里假设 User 对应的 Mapper 接口为 UserMapper,其中有一个名为 selectByNameList 的方法。在 XML 配置文件中编写对应的 SQL 语句,并将参数名设置为 list,如下所示: ``` <select id="selectByNameList" parameterType="java.util.List" resultType="User"> SELECT * FROM User WHERE name IN <foreach item="item" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select> ``` 这样,当调用 selectByNameList 方法时,传入List 对象就会被解析并应用到 SQL 语句中,最终返回符合条件的 User 对象列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值