当前位置: 首页 > news >正文

1.分页查询(后端)—— Vue3 + SpringCloud 5 + MyBatisPlus + MySQL 项目系列(基于 Zulu 11)

本手册是基于 Vue3 + SpringCloud5 + MyBatisPlus + MySQL 的项目结构和代码实现,旨在作为一个教学案例进行讲解。为了使案例更具普适性,文档中的公司名称、实体类、表名以及字段名称等敏感信息均已脱敏。

项目结构概述

项目采用标准的分层架构,划分为 common模块gateway模块业务模块。每个模块都对应特定的职责,确保代码的可维护性和清晰度。以下是项目的基本目录结构:

├─common-module
│  │  pom.xml
│  ├─src
│  │  └─main
│  │      ├─java
│  │      │  └─com
│  │      │      └─example
│  │      │          └─common
│  │      │              ├─constant
│  │      │              │      ResultConstant.java  
│  │      │              ├─entity
│  │      │              │      Storage.java 
│  │      │              ├─enums
│  │      │              │      ResultEnum.java      
│  │      │              └─util
│  │      │                      PageData.java
│  │      │                      Result.java
│  │                              
├─gateway-module
└─business-module│  pom.xml├─src│  ├─main│  │  ├─java│  │  │  └─com│  │  │      └─example│  │  │          └─business│  │  │              │  BusinessApplication.java│  │  │              ├─config│  │  │              │      MyBatisPlusConfig.java│  │  │              │      WebConfig.java│  │  │              ├─mapper│  │  │              │      StorageMapper.java│  │  │              ├─service│  │  │              │  │  StorageService.java│  │  │              │  └─impl│  │  │              │          StorageServiceImpl.java│  │  │              └─web│  │  │                  └─controller│  │  │                          StorageController.java│  │  └─resources│  │      │  application.yml│  │      └─mapper│  │              StorageMapper.xml        

模块说明

  • common-module: 公共模块,包含常量、实体类、枚举类和工具类等基础代码,供其他模块复用。
  • gateway-module: API 网关模块,负责请求转发、负载均衡等功能。
  • business-module: 业务逻辑模块,包含具体的服务、控制器、数据访问层等。

核心技术

1. SpringCloud 5

SpringCloud 是微服务架构的核心框架,提供了服务注册与发现、负载均衡、断路器等重要功能。本项目通过 SpringCloud 构建微服务,并使用网关模块进行统一入口管理。

2. MyBatis-Plus

MyBatis-Plus 是 MyBatis 的增强工具,简化了单表的 CRUD 操作。本项目利用它来实现对数据库的高效访问。MyBatis-Plus 提供的 Page 类非常适合分页查询。

3. Vue3

Vue3 是前端框架,负责与后端进行交互并展示数据。本文档重点在后端,前端部分暂不展开。

4. MySQL

MySQL 是关系型数据库,存储我们的业务数据。本项目使用 MyBatis-Plus 与 MySQL 进行集成,通过实体类映射表结构来实现数据库操作。

关键代码实现

1. 实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("storage_table")
public class Storage {private String companyName;@TableIdprivate Long id;// 其他字段...
}

2. 数据访问层 (Mapper)

public interface StorageMapper extends BaseMapper<Storage> {/*** 分页查询仓库信息* @param page 分页参数* @param name 仓库名称(模糊查询,允许为空)* @return 分页结果*/Page<Storage> findByPage(@Param("page") Page<Storage> page, @Param("name") String name);
}

3. 服务层 (Service)

@Service
public class StorageServiceImpl implements StorageService {@Autowiredprivate StorageMapper storageMapper;@Overridepublic Page<Storage> findByPage(String name, int pageNum, int pageSize) {Page<Storage> page = new Page<>(pageNum, pageSize);QueryWrapper<Storage> queryWrapper = new QueryWrapper<>();if (name != null && !name.isEmpty()) {queryWrapper.like("name", name);}return storageMapper.selectPage(page, queryWrapper);}
}

4. 控制层 (Controller)

@RestController
@RequestMapping("/storage")
public class StorageController {@Autowiredprivate StorageService storageService;@GetMapping("/findByPage")public Result<PageData<List<Storage>>> findByPage(Integer pageNum,Integer pageSize,String name) {if (pageNum == null || pageNum <= 0) {pageNum = 1;}if (pageSize == null || pageSize <= 0) {pageSize = 10;}Page<Storage> storagePage = storageService.findByPage(name, pageNum, pageSize);PageData<List<Storage>> pageData = new PageData<>(storagePage.getRecords(), storagePage.getTotal());return Result.ok(pageData);}
}

5. Mapper XML 文件

<mapper namespace="com.example.business.mapper.StorageMapper"><select id="findByPage" resultType="com.example.common.entity.Storage">SELECTid,company_name AS companyName,type,name,company_id AS companyId,manager,phone,address,area,state,create_time AS createTime,update_time AS updateTimeFROM storage_table<where><if test="name != null and name != ''">AND name LIKE CONCAT('%', #{name}, '%')</if></where></select>
</mapper>

结论

通过该项目结构,可以看到微服务架构下如何通过 SpringCloud 进行模块化拆分,以及通过 MyBatis-Plus 实现高效的数据访问。整个项目结构清晰,适合进行扩展,代码层次分明,易于维护。

http://www.lryc.cn/news/447533.html

相关文章:

  • 机器学习与深度学习的区别:深入理解与应用场景
  • C++学习笔记(45)
  • 【2】图像视频的加载和显示
  • 1. BOOT.BIN 2. 固化 3. 启动 4. SDK 5. 文件
  • vue按钮接收键盘回车事件
  • 腾讯云点播及声音上传
  • 如何查看服务器是否有raid阵列卡以及raid类型
  • 工博会动态 | 来8.1馆 看桥田如何玩转全场
  • 新版torch_geometric不存在uniform、maybe_num_nodes函数问题(Prune4ED论文报错解决)
  • 实现简易 vuedraggable 的拖拽排序功能
  • 第L2周:机器学习|线性回归模型 LinearRegression:2. 多元线性回归模型
  • JavaScript的条件语句
  • vue3 vite模式配置测试,开发、生产环境以及代理配置
  • 【rabbitmq-server】安装使用介绍
  • Kafka系列之:安装部署CMAK,CMAK管理大型Kafka集群参数调优
  • c语言200例 64
  • [leetcode]216_组合总和III_给定数字范围且输出无重复
  • Doris 2.x 安装及使用
  • MySQL字符集设置
  • 深度学习模型量化
  • 红黑树和B+树
  • debian 12配置固定ip
  • OceanBase技术解析: 执行器中的自适应技术
  • Spring Cloud Gateway接入WebSocket:实现实时通信
  • linux信号| 学习信号三步走 | 学习信号需要打通哪些知识脉络?
  • Java调用第三方接口、http请求详解,一文学会
  • windows10使用bat脚本安装前后端环境之redis注册服务
  • fastapp-微信开发GPT项目第一课
  • 在双十一必买的好物有哪些?2024年双十一好物清单分享
  • 避免glibc版本而报错,CentOS等Linux安装node.js完美方法