使用Java将数组批量存入数据库

导读:本篇文章讲解 使用Java将数组批量存入数据库,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在做前后端分离的时候,我们平常接收前端的数据存入数据库时,一般参数都是实体类对象,

那么前端传送过来一个数组,我们数据库中没有该字段,该如和把数组中的内容添加到数据库呢?

操作如下:

我们在需要添加数据的实体类中声明一个假字段

Coupon实体类

// 注解是MP里的,表示该字段不属于数据库字段
// 需要给字段声明Get/Set/toString

@TableField(exist = false)
    private String userIds;

看一下Web层的接口需要传入哪些参数

CouponController

coupon对象中有一个userIds数组参数,里面的内容需要存入到UserCoupon表里

/**
     * 接收数组
     * @param coupon
     * @return DataResult
     */
    @PostMapping("/add")
    public DataResult insertCoupon(@RequestBody Coupon coupon){
        return couponService.add(coupon);
    }

可以看到是一个Coupon实体类的对象,我们的userIds是包含在Coupon对象中的一个数组,需要将数组中的内容转为key,value格式,接下来就在业务层处理数组转换,

注意:UserCoupon是另一张表的实体,数组中有UserCoupon中的对应参数

ServiceImpl

@Override
    public DataResult add(Coupon coupon) {
        int result = couponMapper.insert(coupon);
        if (result != 0) {
            if ("指定用户".equals(coupon.getCouUser())){
                //获取到用户id串
                String userIds = coupon.getUserIds();
                //将userIds里的内容转为对象的一个集合
                List<WycUserCoupon> list = JSONArray.parseArray(userIds, WycUserCoupon.class);
                for (WycUserCoupon userCoupon : list) {
                    userCoupon.setCouId(coupon.getId());
                    userCoupon.setUserCouName(coupon.getCouName());
                }
                wycUserCouponMapper.designatedUsersToReceiveCoupons(list);
            }
            return DataResult.success("操作成功");
        }
        return DataResult.success("操作失败");
    }

然后我们对list进行for循环,依次添加到数据库里

 designatedUsersToReceiveCoupons这个方法是在XML中定义的批量插入操作 

<!--批量插入-->
    <insert id="designatedUsersToReceiveCoupons">
        INSERT INTO wyc_user_coupon
        (
            user_id,
            user_name)
        VALUES
        <foreach collection="list" item="item" separator=",">
            (
             #{item.userName}
            )
        </foreach>
    </insert>

最后来进行测试:我是在ApiFox中进行的测试,数据的结构是下面的内容,userIds是数组格式


{
    "id": 151, 
    "userIds": [
        {
            "userId": 2,
            "userName": "蔡徐坤"
        },{
            "userId": 2,
            "userName": "李亚痿"
        }
    ]
}

最后测试运行就可以添加到数据库里。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48515.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!