在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层接口去添加到数据库,我们看一下结果
那么我们看一下数据库中有没有添加进去
数据库中也添加成功