谷粒商城实战笔记-76-商品服务-API-平台属性-规格参数新增与VO


这一节的主要内容是属性分组查询、新增规格参数属性的功能。

一, 查询全部时增加模糊匹配功能

在这里插入图片描述

查询调用的是这个接口product/attrgroup/list/{catelogId}

在这里插入图片描述

修改结果对应的Service中的方法的代码。

	@Override
    public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
        if (catelogId == null) {
            IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), new QueryWrapper<>());
            return new PageUtils(page);
        }

        String key = (String)params.get("key");
        QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("catelog_id", catelogId);
        if (!StrUtil.isEmpty(key)) {
            wrapper.and((obj)->{
                obj.eq("attr_group_id",key).or().like("attr_group_name",key);
            });
        }

        IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), wrapper);
        return new PageUtils(page);

    }

二,新增规格参数

在这里插入图片描述

新增对应的后台接口是product/attr/save

在这里插入图片描述

在这里插入图片描述

这是代码自动生成工具生成的代码,还不够晚上,前端提交的分组信息没有保存。

为了实现这个功能,在vo包下新增一个AttrVo类。

在这里插入图片描述

AttrVo相对于AttrEntity多了一个attrGroupId属性。

Controller使用AttrVo封装前端传的数据。

在这里插入图片描述

saveAttr的实现即保存了属性信息,也保存了属性和分组的关系。

在这里插入图片描述

三,关于vo的知识

在Java开发中,VO(Value Object)、DTO(Data Transfer Object)、TO(Transfer Object)、DO(Data Object)、POJO(Plain Old Java Object)、Entity(实体)和DAO(Data Access Object)是常见的术语,它们用于描述不同层面的数据模型和对象。

总结:

  • VO常在Controller层接收接口调用方传来的参数,接口响应的数据也通常封装在VO中
  • DTO通常用在服务间相互传递参数
  • Entity对应数据库表
  • POJO是VO、DTO等的总称
  • DAO与VO等区别较大,DAO中通常会定义操作数据的方法,如save()/update()

VO - Value Object(值对象)

  • 定义:值对象通常用于表示业务领域中的概念,它们可以看作是业务实体的一部分,通常不包含任何业务逻辑。值对象的实例代表了一组不可变的数据,因此它们常常被设计成不可变类(Immutable Class)。
  • 用途:当业务实体过于复杂或者需要将部分属性提取出来单独处理时,可以使用值对象。
  • 示例:例如,一个Address类可以作为一个值对象来表示用户的地址信息。

DTO - Data Transfer Object(数据传输对象)

  • 定义:数据传输对象主要用于不同层之间传递数据,特别是在网络环境中。它们通常包含一些简单的数据属性,而不包含复杂的业务逻辑。
  • 用途:在不同的系统或服务之间传输数据时,使用DTO可以隐藏内部数据结构,提供统一的数据接口。
  • 示例:例如,一个UserDTO类可以用于从前端传输到后端的用户信息。

TO - Transfer Object

  • 定义:TO(Transfer Object)是一个泛指,通常与DTO相似,用于在不同层级之间传输数据。
  • 用途:与DTO相同,用于在不同系统或服务之间传输数据。
  • 示例:可以视为DTO的同义词,例如UserTO

DO - Data Object

  • 定义:数据对象通常用于表示数据库中的记录,可以被视为实体类的另一种说法。
  • 用途:用于表示数据库表映射到Java的对象,通常包含与数据库表列相对应的字段。
  • 示例:例如,一个UserDO类可以表示数据库中的用户表。

POJO - Plain Old Java Object(简单的Java对象)

  • 定义:POJO是一个普通的Java对象,它没有任何框架特定的限制。它可以是VO、DTO或DO,也可以只是一个简单的Java类。
  • 用途:通常用于表示实体类,即数据库表映射到Java的对象,也可以用作VO、DTO的基础类。
  • 示例:例如,一个UserPOJO类可以表示用户信息。

Entity - 实体

  • 定义:实体通常是指业务领域的核心对象,它包含了业务逻辑和规则。
  • 用途:在面向对象的设计中,实体类用于表示业务逻辑中的核心对象。
  • 示例:例如,一个UserEntity类可以表示用户信息,并可能包含一些业务逻辑方法。

DAO - Data Access Object(数据访问对象)

  • 定义:数据访问对象用于封装对数据源(如数据库)的访问逻辑,提供了一种将业务逻辑与底层数据存储分离的方法。
  • 用途:DAO层负责处理与数据库的交互,例如增删查改操作。
  • 示例:例如,一个UserDAO接口可以定义用户数据的操作方法,如save(), find()等。

总结

  • VO:用于封装业务领域的数据,通常是不可变的。
  • DTO/TO:用于不同层级间传输数据,一般没有业务逻辑。
  • DO/POJO/Entity:用于表示数据库中的记录,可以包含业务逻辑。
  • DAO:封装了对数据源的访问逻辑。

在实际开发中,这些概念有时会被混合使用或互换使用,但了解它们对于了解项目结构非常重要,是工作中必须学会的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值