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

news2024/9/24 14:31:42

本手册是基于 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;

    @TableId
    private 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 {

    @Autowired
    private StorageMapper storageMapper;

    @Override
    public 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 {

    @Autowired
    private 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">
        SELECT
        id,
        company_name AS companyName,
        type,
        name,
        company_id AS companyId,
        manager,
        phone,
        address,
        area,
        state,
        create_time AS createTime,
        update_time AS updateTime
        FROM storage_table
        <where>
            <if test="name != null and name != ''">
                AND name LIKE CONCAT('%', #{name}, '%')
            </if>
        </where>
    </select>
</mapper>

结论

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160601.html

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

相关文章

web群集--rocky9.2部署zabbix服务端的详细过程

文章目录 zabbix介绍1. Zabbix 简介2. Zabbix 的核心组件3. Zabbix 的工作原理4. Zabbix 的优势5. Zabbix 的应用场景 部署过程 zabbix介绍 1. Zabbix 简介 Zabbix 是一个 企业级开源监控工具&#xff0c;它能够对各种 IT 组件进行实时监控&#xff0c;包括网络设备、服务器、…

ES6的简单介绍(第二部分)

五 异步编程 5.1 回调函数 5.1.1 概念 回调函数(callback function)&#xff0c;当一个函数作为参数传入另一个参数中&#xff0c;并且它不会立即执行&#xff0c;只有当满足一定条件后该函数才可以执行&#xff0c;这种函数就称为回调函数。 你可以将其理解为 回头再调用的意…

如何进行“服务器内部错误”的诊断 | OceanBase诊断案例

本文作者&#xff1a;任仲禹&#xff0c;爱可生数据库高级工程师&#xff0c;擅长故障分析和性能优化。 的OMS迁移工具具备丰富的功能。但在实际运维场景中&#xff0c;我们可能会遇到各种问题&#xff0c;其中“服务器内部错误”便是一个较为棘手的问题&#xff0c;因为界面上…

运行python程序

1 终端运行 1.1、直接在python解释器中书写代码 >>> print(法外狂徒) 法外狂徒 …

【C++掌中宝】走进C++引用的世界:从基础到应用

文章目录 引言1. 基础概念2. 引用与指针的区别3. 引用的应用场景3.1 引用作为函数参数3.2 引用作为函数返回值3.3 常引用&#xff08;const引用&#xff09;的使用3.4 引用与多态 4. C 引用的优缺点5. 引用的注意事项与常见陷阱6. 总结结语 引言 C 引用是编写高效、简洁代码的…

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…

【JVM】JVM执行流程和内存区域划分

是什么 Java 虚拟机 JDK&#xff0c;Java 开发工具包JRE&#xff0c;Java 运行时环境JVM&#xff0c;Java 虚拟机 JVM 就是 Java 虚拟机&#xff0c;解释执行 Java 字节码 JVM 执行流程 编程语言可以分为&#xff1a; 编译型语言&#xff1a;先将高级语言转换成二进制的机器…

爆火南卡开放式耳机,音质性能霸榜TOP1,行业唯一达专业HiFi级音质标准!

爆火南卡开放式耳机&#xff0c;音质性能霸榜TOP1&#xff0c;行业唯一达专业HiFi级音质标准&#xff01; 随着科技的不断进步&#xff0c;耳机市场迎来了又一次革命性的创新。南卡&#xff08;NANK&#xff09;品牌近日宣布&#xff0c;其最新力作——南卡Ultra耳夹开放式耳机…

大模型榜单汇总整理

大型语言模型&#xff08;LLM&#xff09;评估榜单提供了对不同模型性能的标准化比较&#xff0c;涵盖了从通用能力到特定领域应用的多个方面。这些榜单专注于评估模型在特定领域的应用能力&#xff0c;有助于开发者了解模型的优势和局限性&#xff0c;推动语言模型的发展和优化…

彩虹表攻击

彩虹表攻击是一种通过查找预计算哈希值来破解密码的技术。攻击者会生成一个包含大量常见密码及其哈希值的查找表&#xff0c;随后将这些哈希值与数据库中的密码哈希进行匹配&#xff0c;从而快速找出对应的明文密码。该攻击方法特别适用于使用弱密码且未进行加盐处理的系统。 相…

Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】

Spring Cloud Alibaba-&#xff08;1&#xff09;搭建项目环境 Spring Cloud Alibaba-&#xff08;2&#xff09;Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-&#xff08;3&#xff09;OpenFeign【服务调用】 Spring Cloud Alibaba-&#xff08;4&#xff09;Sen…

Windows电脑使用VNC远程桌面本地局域网内无公网IP树莓派5

目录 前言 1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 2. Windows安装VNC远程树莓派 3. 使用VNC Viewer公网远程访问树莓派 3.1 安装Cpolar步骤 3.2 配置固定的公网地址 3.3 VNC远程连接测试 4. 固定远程连接公网地址 4.1 固定TCP地址测试 作者简介&#xff1…

在Windows系统上安装的 Arrow C++ 库

在Windows系统上安装的 Arrow C 库 正文第一步第二步第三步第四步注: 检查是否安装成功 吐槽 正文 第一步 git clone gitgithub.com:apache/arrow.git第二步 打开powershell (好像cmd也可以,不过我试了powershell中不报错,cmd中报错,不是很清楚为什么) 打开arrow的目录 cd …

利士策分享,如何培养良好的工作习惯?

利士策分享&#xff0c;如何培养良好的工作习惯&#xff1f; 在这个快节奏、高压力的职场环境中&#xff0c;培养良好的工作习惯不仅关乎个人职业发展的顺畅度&#xff0c; 更是提升工作效率、保持身心健康的关键。 以下是一些实用的建议&#xff0c;帮助你在日常工作中逐步构…

fiddler监听安卓http请求

下载安装Fiddler 官网 配置 选择Options 打开模拟器找到设置 打开app请求就能实现接口的监听了 https需要单独处理 参考 https://blog.csdn.net/lengdaochuqiao/article/details/88170522

靠AI视频在短视频平台接单月入过万,她怎么做到的?AI视频真的来了

大家好&#xff0c;我是画画的小强 相信大家和我一样&#xff0c;从小也有一个导演梦&#xff0c;感谢AI时代&#xff0c;替我完成了这个梦想&#xff0c;如果你想知道如何实现的&#xff0c;今天这篇文章&#xff0c;你一定要看完&#xff01; 从去年11月份起&#xff0c;随…

MISC - 第三天(MSB二进制高地址位,ASCII编码,brainfuck编码)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天继续讲解MISC题目 被嗅探的流量 观察题目信息&#xff0c;猜测可能是通过http网址传输文件&#xff0c;也可以查询内网ip进行筛查 过滤http协议&#xff0c;发现upload.php路径 查询POST提交请求 在第二条数据里…

【Python报错已解决】NameError: name ‘reload‘ is not defined

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

开学季好物合集!带你揭秘2024最全数码好物清单!学生党必看!

开学季总是令人充满期待与憧憬。对于学生党来说&#xff0c;拥有合适的学习装备和数码好物&#xff0c;不仅能提升学习效率&#xff0c;还能为校园生活增添诸多便利与乐趣。在科技飞速发展的今天&#xff0c;数码产品的更新换代日新月异&#xff0c;市场上琳琅满目的数码好物让…

数据结构算法题

目录 轮转数组原地移除数组中所有元素val删除有序数组中的重复项合并两个有序数组 轮转数组 思路1&#xff1a; 1.利用循环将最后一位数据放到临时变量&#xff08;n&#xff09;中 2.利用第二层循环将数据往后移一位 3.将变量&#xff08;n&#xff09;的数据放到数组第一位 时…