• 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除



    持续学习&持续更新中…

    守破离


    【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除

    Object划分

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述


    • 数据库中对于一张表的数据,由于拥有隐私字段、多余字段、字段过少等原因,不应该直接传递给客户端让客户端直接使用。
    • 并且要知道数据的传输是要经过网络通信的,考虑到数据大小对于用户流量、系统并发量/吞吐量等的影响,我们也不应该给客户传递冗余或者缺失的JSON数据。
    • 还有很多原因
      • 比如我们的一个业务所需要的信息有时候其实并不是仅由一张表就能覆盖的
      • 比如数据库中的字段信息其实并不适合展示给用户看,需要做处理
      • 前端发过来的数据,使用一个简单的数据库对象也并不一定能处理好
    • 综上,我们肯定要对从数据库中查询出来的表数据进行一些加工处理、业务逻辑处理之后再传递给上一层,直到客户端,而不是简单的一张表对应一个Model对象。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述


    在这里插入图片描述

    批量删除/添加

    一句一句删除的话,会发送很多个请求给MySQL服务器,会对MySQL造成较大的性能影响,也会占用资源和带宽,所以使用批量删除

        //TODO 写博客:批量删除
        @PostMapping("/attr/relation/delete")
        public R batchDeleteRelation(@RequestBody List<AttrAttrGroupRelationVo> relationVos) {
            relationService.batchDeleteRelation(relationVos);
            return R.ok();
        }
    
        @Transactional
        @Override
        public void batchDeleteRelation(List<AttrAttrGroupRelationVo> relationVos) {
            this.baseMapper.batchDeleteRelation(relationVos);
        }
    
    @Mapper
    public interface AttrAttrgroupRelationDao extends BaseMapper<AttrAttrgroupRelationEntity> {
    
        /*
        一句一句删除的话,会发送很多个请求给MySQL服务器,会对MySQL造成较大的性能影响,也会占用资源和带宽,所以使用批量删除
    
        批量删除语句:
        DELETE FROM pms_attr_attrgroup_relation
        WHERE
        ('attr_id' = 1 AND 'attr_group_id' = 1)
        OR
        ('attr_id' = 3 AND 'attr_group_id' = 2)
        OR ...
         */
    
        void batchDeleteRelation(@Param("relations") List<AttrAttrGroupRelationVo> relationVos);
    
    }
    
    <?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.atguigu.gulimall.product.dao.AttrAttrgroupRelationDao">
    
        <!-- 可根据自己的需求,是否要使用 -->
        <resultMap type="com.atguigu.gulimall.product.entity.AttrAttrgroupRelationEntity" id="attrAttrgroupRelationMap">
            <result property="id" column="id"/>
            <result property="attrId" column="attr_id"/>
            <result property="attrGroupId" column="attr_group_id"/>
            <result property="attrSort" column="attr_sort"/>
        </resultMap>
    
        <delete id="batchDeleteRelation">
            DELETE FROM `pms_attr_attrgroup_relation` WHERE
            <foreach collection="relations" item="item" separator=" OR ">
                (attr_id=#{item.attrId} AND attr_group_id=#{item.attrGroupId})
            </foreach>
        </delete>
    
    </mapper>
    

    批量添加:

        <insert id="batchAddRelation">
            INSERT INTO  `pms_attr_attrgroup_relation`(attr_id, attr_group_id) VALUES
            <foreach collection="relations" item="item" separator=",">
                (#{item.attrId} , #{item.attrGroupId})
            foreach>
        insert>
    

    or

        @Transactional
        @Override
        public void batchAddRelation(List<AttrAttrGroupRelationVo> relationVos) {
    //        使用自己写的批量添加也可以
    //        this.baseMapper.batchAddRelation(relationVos);
    
            List<AttrAttrgroupRelationEntity> collect = relationVos.stream().map(relation -> {
                AttrAttrgroupRelationEntity attrAttrgroupRelationEntity = new AttrAttrgroupRelationEntity();
    //            attrAttrgroupRelationEntity.setAttrId(relation.getAttrId());
    //            attrAttrgroupRelationEntity.setAttrGroupId(relation.getAttrGroupId());
                BeanUtils.copyProperties(relation, attrAttrgroupRelationEntity);
                return attrAttrgroupRelationEntity;
            }).collect(Collectors.toList());
            this.saveBatch(collect);
        }
    

    参考

    雷丰阳: Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目.


    本文完,感谢您的关注支持!


  • 相关阅读:
    谷粒商城14——订单支付(AliPay)
    ThingsBoard IoT Gateway 实战(二)- 通过 Request Connector 获取天气
    hyper-v虚拟机ubuntu ssh配置
    从2022年Q1财报看携程的韧性和远景
    互联网商业模式发展之路
    Linux OpenGrok搭建
    【HCIA】ACL & NAT
    自动化方案不合理的原因浅析
    关于ABAP 中的标题行(又叫表头行或者 header line)的理解
    多通道LMMSE图像超分辨复原方法研究-附Matlab代码
  • 原文地址:https://blog.csdn.net/weixin_44018671/article/details/129523942