1. 定义Mapper接口方法
package cn.lazyfennec.chapter_1.mapper;
import cn.lazyfennec.chapter_1.domain.po.User;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
public interface UserMapper extends BaseMapper<User> {
// NOTE 这里的 Constants.WRAPPER 是固定写法
void updateBalanceByIds(@Param(Constants.WRAPPER) LambdaQueryWrapper<User> queryWrapper, @Param("amount") int amount);
}
2. xml中新增相关接口方法的具体sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<!-- 这里的ew.customSqlSegment 是固定写法 -->
<update id="updateBalanceByIds">
update user set balance = balance - #{amount} ${ew.customSqlSegment}
</update>
</mapper>
3. 调用
@Test
void testUpdateBalanceByIds() {
// 要更新的ID集合
List<Long> ids = List.of(1L, 2L, 3L);
int amount = 200;
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>().in(User::getId, ids);
// 调用自定义的SQL方法
userMapper.updateBalanceByIds(queryWrapper, amount);
}
如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~











网友评论