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.mzph.cn/web/53762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux命令之firewall-cmd用法

firewall-cmd Linux上新用的防火墙软件&#xff0c;跟iptables差不多的工具 补充说明 firewall-cmd 是 firewalld的字符界面管理工具&#xff0c;firewalld是centos7的一大特性&#xff0c;最大的好处有两个&#xff1a;支持动态更新&#xff0c;不用重启服务&#xff1b;第…

Spring Mybatis 动态语句 总结

1.简介 Mybatis 提供动态语句的功能来增强多条件变动的查询语句。 2.代码 if和where搭配使用&#xff1a; <select id"query" resultType"a">select * from t_a<where><!-- where内没有条件满足&#xff0c;不转成where&#xff0c;有…

langchain v0.3更新了什么?

版本改动 这是具体改动的链接 官方blog首先说明了&#xff1a; 所有软件包已在内部从 Pydantic 1 升级到 Pydantic 2。 所有软件包都完全支持在用户代码中使用 Pydantic 2&#xff0c;而无需使用 langchain_core.pydantic_v1 或 pydantic.v1 等桥接程序。 由于 Pydantic 1 已…

Python爬虫bs4基本使用

一、bs4 1、bs4获得标记的子集或父集或兄弟节点 &#xff08;1&#xff09;子集&#xff1a; 通过contents和children可以获得子集&#xff0c;前者获得的是字符串列表&#xff0c;后者获得的是一个列表迭代器对象&#xff0c;需要遍历获得内容 比如我们有以下代码和数据&a…

Android LiveData 数据倒灌

相关类型的文章很多&#xff0c;这里只做个人总结和其余的方法推荐 1.什么是数据倒灌&#xff1f; 所谓的“数据倒灌”&#xff1a;其实是类似粘性广播那样&#xff0c;当新的观察者开始注册观察时&#xff0c;会把上次发的最后一次的历史数据传递给当前注册的观察者。 一方…

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host 表示服务器主机的地址和端口号 URL 里面不是已经有 Host 了吗&#xff0c;为什么还要写一次&#xff1f; 这里的 Host 和 URL 中的 IP 地址、端口什么的&#xff0c;绝大部分情况下是一样的&#xff0c;少数情况下可能不同当前我们经过某个代理进行转发。过程中&#xf…

2024年项目经理不能错过的开源项目管理系统大盘点:全面指南

在2024年&#xff0c;随着项目管理领域的不断发展&#xff0c;开源项目管理系统成为了项目经理们提升工作效率的利器。本文将全面盘点几款备受推荐的开源项目管理系统&#xff0c;帮助项目经理们找到最佳选择&#xff0c;不容错过。 在项目管理日益复杂的今天&#xff0c;开源项…

腾讯云点播及声音上传

文章目录 1、开通腾讯云点播2、获取腾讯云API密钥3、完成声音上传3.1、引入依赖3.2、参考&#xff1a;接入点地域3.3、参考&#xff1a;任务流设置3.4、首先修改配置&#xff1a;3.4.1、 3.5、TrackInfoApiController --》 uploadTrack()3.6、VodServiceImpl --》 uploadTrack(…

SOLIDWORKS Flow Simulation对几何模型都有哪些要求?

SOLIDWORKS Flow Simulation 是一款集设计与仿真于一体的流体仿真软件&#xff08;EFD&#xff0c;CFD&#xff09;&#xff0c;以其操作简便、建模快捷和快速收敛等优点&#xff0c;深受广大初学者的喜爱。 在模型建立方面&#xff0c;Flow Simulation 能够直接利用 SOLIDWOR…

论文解读《Object-Centric Learning with Slot Attention》

系列文章目录 文章目录 系列文章目录论文细节理解 1. 研究背景2. 论文贡献3. 方法框架3.1 Slot Attention模块3.2 无监督对象发现架构 4. 研究思路5. 实验6. 限制 论文细节理解 supervised property prediction tasks是什么&#xff1f; Supervised property prediction tasks…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

数据科学 - 字符文本处理

1. 字符串的基本操作 1.1 结构操作 1.1.1 拼接 • 字符串之间拼接 字符串之间的拼接使用进行字符串的拼接 a World b Hello print(b a) • 列表中的字符串拼接 将以分隔符‘,’为例子 str [apple,banana] print(,.join(str)); • 字符串中选择 通过索引进行切片操…

【网络安全】-访问控制-burp(1~6)

文章目录 前言   1.Lab: Unprotected admin functionality  2.Lab: Unprotected admin functionality with unpredictable URL   3.Lab: User role controlled by request parameter   4.Lab:User role can be modified in user profile  5.Lab: User ID controlled by…

Windows 10 系统安装 FFmpeg 查看、转换、编辑音频文件

1、FFmpeg官网&#xff1a;FFmpeg 点击下载 可以选择下载full版本 下载之后解压到指定目录&#xff0c;在系统环境变量 Path 里面新增环境变量 打开CMD终端运行 ffmpeg -version 查看是否安装成功。 2、基本命令 查看音频基本信息 ffprobe 1.mp3 ##输出 [mp3 000002ab334405…

LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142528967 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 XTuner…

Spark-RDD持久化

一、Spark的三种持久化机制 1、cache 它是persist的一种简化方式&#xff0c;作用是将RDD缓存到内存中&#xff0c;以便后续快速访问&#xff0c;提高计算效率。cache操作是懒执行的&#xff0c;即执行action算子时才会触发。 2、persist 它提供了不同的存储级别&#xff0…

关于神经网络的一个介绍

这篇文章中&#xff0c;我将简单介绍下与神经网络有关的东西&#xff0c;包括它的基本模型&#xff0c;典型的算法以及与深度学习的联系等内容。 一、神经元 神经网络是由许多个神经元组成的&#xff0c;在生物的神经网络中&#xff0c;就是神经元间相互连接&#xff0c;传递…

高校竞赛管理系统的设计与实现

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校竞赛管理系统信息管理难度大&#xff0c;容错率低&am…

Ubuntu 开机自启动 .py / .sh 脚本,可通过脚本启动 roslaunch/roscore等

前言 项目中要求上电自启动定位程序&#xff0c;所以摸索了一种 Ubuntu 系统下开机自启动的方法&#xff0c;开机自启动 .sh 脚本&#xff0c;加载 ROS 环境的同时启动 .py 脚本。在 . py 脚本中启动一系列 ROS 节点。 一、 .sh 脚本的编写 #!/bin/bash # gnome-terminal -- …

面试经典150题 堆

215.数组中的第K个最大元素 建堆算法实现-CSDN博客 215. 数组中的第K个最大元素 中等 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必…