美文网首页
2. Mybatis-plus 自定义语句

2. Mybatis-plus 自定义语句

作者: 右耳菌 | 来源:发表于2025-08-25 08:52 被阅读0次

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);
    }

如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

相关文章

网友评论

      本文标题:2. Mybatis-plus 自定义语句

      本文链接:https://www.haomeiwen.com/subject/fdisvjtx.html