在Mybatis中实现批量插入,需要使用到Mybatis的foreach标签
先看一下Mapper层的接口
public interface WycUserCouponMapper extends BaseMapper{ boolean designatedUsersToReceiveCoupons(List list); }
前端传过来的是多个数组,需要用list集合来接收
然后看一下Mapper.xml中的批量插入语法
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
(
#{item.userId},
#{item.userName},
#{item.couId},
#{item.userCouName},
#{item.userCouType},
#{item.userCouMoney},
#{item.maxMoney},
#{item.userCouFull}
)
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; public interface WycUserCouponService extends IService{ DataResult designatedUsersToReceiveCoupons(List list); }
返回值DataResult是自己封装的结果集,没有结果集的可以使用int/string
ServiceImpl实现层:
@Override
public DataResult designatedUsersToReceiveCoupons(List list) {
boolean isRight = wycUserCouponMapper.designatedUsersToReceiveCoupons(list);
if (isRight){
return DataResult.success();
}
return DataResult.error();
}
Web层:
@PostMapping("/designatedUsersToReceiveCoupons")
public DataResult designatedUsersToReceiveCoupons(@RequestBody List list){
return wycUserCouponService.designatedUsersToReceiveCoupons(list);
}
我使用的测试工具是ApiFox,接下来我们在ApiFox中进行测试
我们按照数组的方式来传递,Web层接收到数组进行业务层判断,调用Mapper层接口去添加到数据库,我们看一下结果
那么我们看一下数据库中有没有添加进去
数据库中也添加成功



