Mybatis批量插入

在Mybatis中实现批量插入,需要使用到Mybatis的foreach标签

先看一下Mapper层的接口


/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author 
 * @since 2022-04-21
 */
public interface WycUserCouponMapper extends BaseMapper<WycUserCoupon> {
    /**
     * 批量插入功能
     */
    boolean designatedUsersToReceiveCoupons(List<WycUserCoupon> list);
}

前端传过来的是多个数组,需要用list集合来接收

然后看一下Mapper.xml中的批量插入语法

<!--批量插入-->
    <insert id="designatedUsersToReceiveCoupons">
        INSERT INTO wyc_user_coupon
        (
            user_id,
            user_name,
            cou_id,
            user_cou_name,
            user_cou_type,
            user_cou_money,
            max_money,
            user_cou_full)
        VALUES
        <foreach collection="list" item="item" separator=",">
            (
             #{item.userId},
             #{item.userName},
             #{item.couId},
             #{item.userCouName},
             #{item.userCouType},
             #{item.userCouMoney},
             #{item.maxMoney},
             #{item.userCouFull}
            )
        </foreach>
    </insert>

 item属性默认值是item,如果需要换位别的值,需要在Mapper接口添加@Param注解

然后就是Service层 和 Impl层,

可以直接在测试类中测试看看是否能添加成功,我这里使用的是三层架构来接收前端传过来的数组

Service层

package com.ywt.coupon.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ywt.common.utils.DataResult;
import com.ywt.coupon.model.WycUserCoupon;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 
 * @since 2022-04-21
 */
public interface WycUserCouponService extends IService<WycUserCoupon> {

    /**
     * 批量插入
     * @param list
     * @return com.ywt.common.utils.DataResult
     */
    DataResult designatedUsersToReceiveCoupons(List<WycUserCoupon> list);

}

返回值DataResult是自己封装的结果集,没有结果集的可以使用int/string

ServiceImpl实现层:

@Override
    public DataResult designatedUsersToReceiveCoupons(List<WycUserCoupon> list) {
        boolean isRight = wycUserCouponMapper.designatedUsersToReceiveCoupons(list);
        if (isRight){
            return DataResult.success();
        }
        return DataResult.error();
    }

Web层

/**
     * 批量插入
     * @param list
     * @return com.ywt.common.utils.DataResult
     */
    @PostMapping("/designatedUsersToReceiveCoupons")
    public DataResult designatedUsersToReceiveCoupons(@RequestBody List<WycUserCoupon> list){
        return wycUserCouponService.designatedUsersToReceiveCoupons(list);
    }

我使用的测试工具是ApiFox,接下来我们在ApiFox中进行测试

我们按照数组的方式来传递,Web层接收到数组进行业务层判断,调用Mapper层接口去添加到数据库,我们看一下结果

 那么我们看一下数据库中有没有添加进去

数据库中也添加成功

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值