青训营X豆包MarsCode技术训练营伴学笔记|实践记录以及工具使用:tiktok_e-commence项目实现|豆包MarsCode AI刷题

62 阅读2分钟

tiktok_e-commence项目商品模块Service实现

前情提要

前面我们三篇文章描述了数据库设计以及项目整体架构技术选型设计。具体实现一下。

 建议:设计的时候推荐,从底层逻辑开始设计,然后是功能设计,技术选型。实现的时候,先写dao层,controller层,最后是service层。
 

实现代码

1.首先创建maven工程 如图架构即可

image.png

2.1. src/main/java:

-   **johnny**: 包含了主要的应用程序代码。
    -   **config**: 配置类,包括日期时间配置和MyBatis Plus配置。
    -   **controller**: 控制器类,处理HTTP请求并返回响应。
        -   `ProductCategoriesController`: 产品分类控制器。
        -   `ProductsController`: 产品控制器。
    -   **mapper**: 映射器接口和XML映射文件,用于数据库操作。
        -   `ProductCategoriesMapper`: 产品分类映射器。
        -   `ProductsMapper`: 产品映射器。
           `ProductsQuantityMapper`: 产品数量映射器。
    -   **model**: 模型层,包含数据传输对象(DTO)、持久化对象(PO)和视图对象(VO)。
        -   **dto**: 数据传输对象。
            -   `ProductsDto`: 产品数据传输对象。
        -   **po**: 持久化对象。
            -   `ProductCategories`: 产品分类持久化对象。
            -   `Products`: 产品持久化对象。
            -   `ProductsQuantity`: 产品数量持久化对象。
        -   **vo**: 视图对象。
           -   `ProductsVo`: 产品视图对象。
        -   **impl**: 实现类。
            -   `ProductCategoriesServiceImpl`: 产品分类服务实现。
            -   `ProductsServiceImpl`: 产品服务实现。
        -   接口:
          IProductCategoriesService`: 产品分类服务接口。
          IProductsService`: 产品服务接口。

3. 配置servlet
image.png

4.实现添加商品

image.png

 解释:接口请求用Restful风格(PostMapping提交数据,get请求不安全,还限制字符串长度)
       另外传递的数据是用json串传递,加上@RequesBody的注解。

5.实现类

image.png

           解释:向三张表,添加数据,一张是搜索表,一张产品数量表,一个产品表。自然得加一个事务管理。
                  if语句需要校验
                  BeanUtil,复制前端传过来的参数,写入到新创建的类。
                  整个流程完成后,方法返回一个成功的响应,告知客户端数据已成功添加。

5单个商品查询

image.png

   解释:由于单个查询非常简单,用mybatisplus自带的service就行
        ```
        public interface IProductsService extends IService<Products>
        ```
        继承即可用.

6列表查询

image.png

注意:虽说是列表查询实际上是分页查询

image.png

image.png

image.png

image.png

          解释: 返回类型是 `PageResult<Products>`,这通常是一个自定义类,用来封装分页结果。
                 参数 `pageParams` 用来传递分页信息,比如页码(`pageNo`)和每页大(`pageSize`)。
                 使用 MyBatis-Plus 提供的 `LambdaQueryWrapper` 来创建一个查询条件构造器。这里没有添加具体的查询条件,意味着默认会查询所有记录。
                  调用 `productsMapper` 接口中的 `selectPage` 方法执行分页查询。`productsMapper` 
                 `items`:当前页的数据列表。
                 `total总的记录数。
                  `pageParams.getPageNo()`当前页码。
                  `pageParams.getPageSize()`每页大小。

代码测试:

列表查询

image.png

image.png

单个商品查询

image.png