小工具知识网

当前位置: 首页 > 行业知识 > 字母哥毕业后端项目介绍方案(SpringBoot版)

行业知识

字母哥毕业后端项目介绍方案(SpringBoot版)

2026-11-06 07:11:09 来源:互联网转载

文章目录

  • 前言
  • 学习视频[日更新 必看]
  • 环境安装部署教学视频
  • 系统的环境
  • 系统架构设计
  • 系统架构图
  • 系统完整架构文件目录图
  • 系统必须掌握架构文件目录图
  • 系统前后端数据交互的细节
  • 系统设计架构图
  • 代码翻译(如果有看不懂的代码如何进行自救看懂)
    • 如何进行有效的提问
      • 1.看不懂某个方法 如何进行提问
      • 2.如何提问某个文件的作用是干嘛的
      • 系统技术清单
        • Springboot
        • Mybatis
        • Lombok
        • Jwt
        • POI
        • MySql
        • 序列化与反序列化
        • 拉姆达表达式
        • 全局过滤器
        • 文件上传与下载
        • 该系统核心(必看)
          • 系统配置文件application.yml
          • 如何找到本项目的数据库配置地址
          • 如何启动项目
          • 如何判断项目启动成功
          • 如何找到文件上传的代码
          • 系统是如何操作数据库的 增删改查(必看)
            • Mybatis
            • 如何执行增删改查操作的
              • 保存方法
              • 删除方法
              • 修改方法
              • 查询方法
              • Java高级知识
                • 配置前后端分离的项目 出现跨域问题如何解决
                • 如何暴露该系统上传的文件(图片资源)
                • Java基础知识
                  • Java时间类的一些操作(必看)
                  • 系统开发工具以及环境安装
                    • 第一步如果你有idea 判断自己的idea是不是满足条件
                    • 使用原因
                    • 第二步使用idea打开项目打开Maven配置

                      前言

                      感谢支持字母哥 此文档将会持续性更新

                      如有同学不明白 可以直接找我 蟹蟹支持

                      学习视频[日更新 必看]

                      学习资料

                      验证码

                      y94a

                      环境安装部署教学视频

                      环境安装以及启动流程看这里

                      系统的环境

                      后端语言: Java

                      后端框架: Spring Boot

                      服务器:Tomcat

                      Jdk版本:17

                      数据库:Mysql5.7或者更高都可

                      操作系统和内存: windows10以上都可,内存大于8GB

                      软件的编译环境:Java17

                      开发工具:Idea

                      系统架构设计

                      本系统采用B/S模式,将系统划分为三层,分为客户端、服务器端、数据库三个层次。其中:

                      • 客户端:采用html、css、js、vue、elementui等开发技术,提供友好的操作界面。
                      • 服务器端:使用Tomcat服务器,通过HTTP协议与客户端通信,负责系统逻辑处理。
                      • 数据库:使用MySQL数据库进行数据存储,保证数据的可靠性和安全性。

                        系统架构图

                        系统完整架构文件目录图

                        ├─HELP.md├─pom.xml   # 系统安装其他的依赖的包 里面可能包括springboot、mybatis、lombok、jwt、poi等库├─src#源文件|  ├─test #测试文件 |  |  ├─java|  |  |  ├─com|  |  |  |  ├─example|  |  |  |  |    ├─web|  |  |  |  |    |  └WebApplicationTests.java|  ├─main #主要代码|  |  ├─resources|  |  |     ├─application.yml  #项目配置文件|  |  |     ├─static   #系统上传资源文件目录|  |  |     |   ├─images #上传图片存在的地方|  |  ├─java  |  |  |  ├─com|  |  |  |  ├─example|  |  |  |  |    ├─web|  |  |  |  |    |  ├─SysConst.java  #系统常量|  |  |  |  |    |  ├─WebApplication.java #系统启动文件|  |  |  |  |    |  ├─tools #工具库|  |  |  |  |    |  |   ├─BaseContext.java  #请求上下文|  |  |  |  |    |  |   ├─CollaborativeFiltering.java  #协同过滤算法|  |  |  |  |    |  |   ├─CurrentUserInterceptor.java  #当前请求的用户截面|  |  |  |  |    |  |   ├─Extension.java   #扩展帮助类|  |  |  |  |    |  |   ├─GlobalExceptionHandler.java  #全局异常处理类|  |  |  |  |    |  |   ├─GlobalResponseAdvice.java   #全局返回结果处理类|  |  |  |  |    |  |   ├─HttpUtils.java   #http网络请求工具类|  |  |  |  |    |  |   ├─InterceptorConfig.java   #mybatis截面类|  |  |  |  |    |  |   ├─JWTInterceptor.java   #jwt截面类|  |  |  |  |    |  |   ├─JWTUtils.java   #jwt工具类|  |  |  |  |    |  |   ├─LocalDateTimeConfig.java   #本地事件配置类|  |  |  |  |    |  |   ├─MybatisPlusConfig.java   #mybatis分页配置类|  |  |  |  |    |  |   ├─MyMetaObjectHandler.java   #mybatis操作数据之前处理类|  |  |  |  |    |  |   ├─QRCodeTools.java   #二维码识别工具类|  |  |  |  |    |  |   ├─wx   #微信类|  |  |  |  |    |  |   | └WeiXinUtils.java            #微信扩展方法|  |  |  |  |    |  |   ├─exception   #异常处理目录|  |  |  |  |    |  |   |     └CustomException.java   #异常报错基类|  |  |  |  |    |  |   ├─dto   #基础模型目录|  |  |  |  |    |  |   |  ├─BaseDto.java              #基本模型父类|  |  |  |  |    |  |   |  ├─CurrentUserDto.java   #当前用户信息类|  |  |  |  |    |  |   |  ├─FileResultDto.java        #文件上传结果存储类|  |  |  |  |    |  |   |  ├─IdInput.java   #基础单id查询模型类|  |  |  |  |    |  |   |  ├─IdsInput.java   #基础多id查询模型类|  |  |  |  |    |  |   |  ├─PagedInput.java   #基础分页查询模型类|  |  |  |  |    |  |   |  ├─PagedResult.java   #基础分页查询结果模型类|  |  |  |  |    |  |   |  ├─ResponseData.java   #基础响应结果包装模型类|  |  |  |  |    |  |   |  ├─SelectResult.java   #基础下拉框包装模型类|  |  |  |  |    |  |   |  └UserCalculateCosineSimilarity.java #协同过滤算法包装类|  |  |  |  |    |  |   ├─amap   # 高德地图扩展类|  |  |  |  |    |  |   |  ├─MapUtils.java   |  |  |  |  |    |  |   |  ├─dto|  |  |  |  |    |  |   |  |  ├─AddressComponent.java|  |  |  |  |    |  |   |  |  ├─DrivingResultDto.java|  |  |  |  |    |  |   |  |  ├─Paths.java|  |  |  |  |    |  |   |  |  ├─Regeocode.java|  |  |  |  |    |  |   |  |  ├─RegeoInput.java|  |  |  |  |    |  |   |  |  ├─RegeoResultDto.java|  |  |  |  |    |  |   |  |  ├─Route.java|  |  |  |  |    |  |   |  |  ├─RoutePlanningResultDto.java|  |  |  |  |    |  |   |  |  ├─Steps.java|  |  |  |  |    |  |   |  |  └Tmcs.java|  |  |  |  |    |  ├─service# 业务类*|  |  |  |  |    |  |    ├─AppUserService.java# 用户业务声明类|  |  |  |  |    |  |    ├─impl#业务实现目录|  |  |  |  |    |  |    |  ├─AppUserServiceImpl.java   #用户业务实现类|  |  |  |  |    |  ├─mapper#mapper目录 |  |  |  |  |    |  |   ├─AppUserMapper.java#用户CRUD类|  |  |  |  |    |  ├─entity#数据库对应实体类|  |  |  |  |    |  |   ├─AppUser.java    #用户表实体类|  |  |  |  |    |  |   ├─BaseEntity.java#基础实体类|  |  |  |  |    |  |   ├─Enums.java#枚举类|  |  |  |  |    |  ├─dto#前后盾传输模型目录|  |  |  |  |    |  |  ├─AppUserDto.java  #用户模型|  |  |  |  |    |  |  ├─query#查询模型目录|  |  |  |  |    |  |  |   ├─AppUserPagedInput.java#用户分页查询模型类|  |  |  |  |    |  ├─controller#控制器目录|  |  |  |  |    |  |     ├─AppUserController.java#用户控制器类

                        系统必须掌握架构文件目录图

                        ├─HELP.md├─pom.xml   # 系统安装其他的依赖的包 里面可能包括springboot、mybatis、lombok、jwt、poi等库├─src#源文件|  ├─main #主要代码|  |  ├─resources|  |  |     ├─application.yml  #项目配置文件|  |  |     ├─static   #系统上传资源文件目录|  |  |     |   ├─images #上传图片存在的地方|  |  ├─java  |  |  |  ├─com|  |  |  |  ├─example|  |  |  |  |    ├─web|  |  |  |  |    |  ├─service# 业务类*|  |  |  |  |    |  |    ├─AppUserService.java# 用户业务声明类|  |  |  |  |    |  |    ├─impl#业务实现目录|  |  |  |  |    |  |    |  ├─AppUserServiceImpl.java   #用户业务实现类|  |  |  |  |    |  ├─mapper#mapper目录 |  |  |  |  |    |  |   ├─AppUserMapper.java#用户CRUD类|  |  |  |  |    |  ├─entity#数据库对应实体类|  |  |  |  |    |  |   ├─AppUser.java    #用户表实体类|  |  |  |  |    |  |   ├─BaseEntity.java#基础实体类|  |  |  |  |    |  |   ├─Enums.java#枚举类|  |  |  |  |    |  ├─dto#前后盾传输模型目录|  |  |  |  |    |  |  ├─AppUserDto.java  #用户模型|  |  |  |  |    |  |  ├─query#查询模型目录|  |  |  |  |    |  |  |   ├─AppUserPagedInput.java#用户分页查询模型类|  |  |  |  |    |  ├─controller#控制器目录|  |  |  |  |    |  |     ├─AppUserController.java#用户控制器类

                        系统前后端数据交互的细节

                        系统设计架构图

                        代码翻译(如果有看不懂的代码如何进行自救看懂)

                        首先系统的代码逻辑主要写在Service的impl里面

                        然后打开星火大模型 没有就去注册一个 很简单

                        星火大模型免费使用超级链接

                        如何进行有效的提问

                        1.看不懂某个方法 如何进行提问

                        2.如何提问某个文件的作用是干嘛的

                        比如contoller的控制器

                        比如entity文件夹

                        系统技术清单

                        • Java语言
                        • SpringBoot
                        • Mybatis
                        • Lombok
                        • Jwt
                        • POI
                        • MySql
                        • 序列化与反序列化
                        • 拉姆达表达式
                        • 全局过滤器
                        • 文件上传与下载

                          Springboot

                          创建独立的Spring应用,这意味着你可以专注于业务逻辑的开发而不是配置和环境的问题。

                          内嵌Web服务器,如Tomcat、Jetty等,使得应用的部署无需外部容器,极大地简化了应用的部署流程。

                          自动Starter依赖,可以简化构建配置,你只需要添加相应的场景依赖即可。

                          自动配置Spring以及第三方功能,减少了手动配置的工作量。

                          提供生产级别的监控、健康检查以及外部优化配置,这些功能可以帮助我们更好地管理和优化应用。

                          无代码生成、无需编写XML,进一步简化了开发流程。

                          依赖简化:Spring Boot自有的starter中提供了一些可以快捷使用的依赖,让整合或集成一些常用的功能更便捷。

                          一句话概括:Spring Boot是整合Spring技术栈的一种快速开发框架,它极大地简化了Spring应用的开发、部署和运维工作。

                          Mybatis

                          MyBatis是一款开源的持久层框架,它极大地简化了Java对数据库的操作。具有自定义SQL、存储过程和高级映射的特性。MyBatis有效地避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程,通过内部封装JDBC,开发者只需要关注SQL语句本身。此外,MyBatis可以通过简单的XML或注解来配置和映射原生类型、接口和Java POJO(Plain Old Java Objects,普通的老式Java对象)为数据库中的记录。这样的设计使得MyBatis非常适用于处理大量数据的场合。总的来说,MyBatis是一款优秀的持久层框架,它让数据库操作变得更加简单明了。

                          Lombok

                          Lombok是一个Java库,它能够自动插入编辑器和构建工具,从而简化Java开发的过程。这个库的主要目标是消除Java的冗长,尤其是对于简单的Java对象(POJO)。例如,开发人员经常需要在实体类中编写大量的getter或者setter方法,使用Lombok后,可以通过简单的注解形式来减少这些重复的代码,从而提高开发效率。此外,Lombok还具有自动化日志变量的功能。使用Lombok需要的开发环境是Java+Maven+IntelliJ IDEA或者Eclipse (安装Lombok Plugin)。

                          Jwt

                          JWT,全称JSON Web Token,是一种基于token的身份认证方案。它可以实现无状态、单点登录、兼容性和安全性的Web应用授权。在Java中,处理JWT的方式有很多,例如可以使用java-jwt库,这是一个实现了RFC 7519的库。此外,还有JJWT这个纯Java库,用于在JVM和Android上创建和验证JWTs和JWKs。JJWT支持所有标准的JWS和JWE算法,以及自定义声明、加密、压缩和密钥管理。这些库提供了丰富的功能和简单的接口,使得在Java中使用JWT变得更加方便。

                          POI

                          POI是Apache POI项目,它是一个用于读写Microsoft Office文件格式的Java库。POI支持多种Office文档格式,包括Excel、Word、PowerPoint等。在Java中,可以使用POI库来读取和写入这些文件,实现对Office文档的操作。例如,可以使用POI库来读取Excel文件中的数据,或者将数据写入到Excel文件中。此外,POI还提供了一些高级功能,如合并单元格、设置样式、插入图片等。使用POI库可以方便地处理各种Office文档,提高开发效率。

                          MySql

                          MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于Oracle旗下产品。它是一种基于SQL查询语言的开源跨平台数据库管理系统,也是目前市面上最流行的数据库管理软件之一。具有很多独特的特点,如支持多种操作系统、编程语言和存储引擎,可以处理大型数据库,同时也非常适合中小型网站和Web应用开发。这些特性使得MySQL广泛应用于互联网中,成为了WEB应用开发中最主流的数据库管理系统。

                          序列化与反序列化

                          JSON的序列化是将一个JavaScript对象或值转换为JSON字符串的过程,而反JSON的序列化是将一个JavaScript对象或值转换为JSON字符串的过程,而反序列化则是将JSON字符串转换回原始的JavaScript对象或值的过程。

                          在Java中,可以使用内置的JSON库来实现JSON的序列化和反序列化。例如,使用ObjectMapper类可以将Java对象转换为JSON字符串,也可以将JSON字符串转换为Java对象。

                          拉姆达表达式

                          Java的Lambda表达式有许多优点,以下是一些主要的优点:

                          代码精简优雅:Lambda表达式可以使代码变得更加精简和优雅。例如,在遍历Map时,使用lambda表达式可以大大简化代码,如demoMap.forEach((k, v) -> list.add(v));。

                          提高编程效率:Lambda表达式能够将函数作为参数进行传递,使得编程更加高效。这种特性在一些需要将函数作为参数的场景中非常有用,例如在集合类的流式操作或者匿名对象实现相关场景。

                          函数式编程:Lambda表达式是函数式编程的一种体现,它允许我们将一个函数作为另外一个函数的参数,或者理解为一段可以传递的代码(将代码作为实参)。这种特性在其他语言中已经得到广泛应用,例如JavaScript和Python,因此在Java 8中引入Lambda表达式后,Java程序员也能更好地利用这一特性,提高编程效率。

                          替代匿名类:在Java 8之前,如果我们需要创建一个只包含一个抽象方法的匿名类,我们需要使用匿名内部类。但是,自从Java 8添加了函数式接口和lambda表达式后,我们就可以使用更简洁的lambda表达式来替代匿名类。

                          总的来说,Java的Lambda表达式提供了一种更简洁、更高效的方式来编写代码,特别是在涉及到集合类的流式操作或者匿名对象实现相关场景。

                          全局过滤器

                          Java全局过滤器是指在Java Web应用程序中,对所有的请求和响应进行拦截和处理的过滤器。它通常用于实现一些通用的功能,例如身份验证、日志记录、性能监控等。

                          文件上传与下载

                          Java的文件和上传的好处和优点如下:

                          跨平台性:Java是一种跨平台的编程语言,可以在不同的操作系统上运行。因此,使用Java编写的文件上传程序可以在多个平台上运行,具有很高的可移植性。

                          安全性:Java提供了许多安全机制来保护文件上传过程中的数据安全。例如,可以使用加密算法对文件进行加密,以防止数据泄露。

                          强大的库支持:Java拥有丰富的类库和框架,可以帮助开发人员快速实现文件上传功能。例如,Apache Commons FileUpload是一个常用的文件上传库,它提供了简单易用的API来处理文件上传请求。

                          易于维护:Java代码结构清晰,易于维护。在开发文件上传程序时,可以使用面向对象的编程思想来组织代码,提高代码的可读性和可维护性。

                          高性能:Java虚拟机(JVM)具有高度优化的性能,可以实现高效的文件上传操作。此外,Java还提供了多线程编程机制,可以充分利用多核处理器的优势,提高文件上传的速度。

                          该系统核心(必看)

                          系统配置文件application.yml

                          server:  tomcat: #tomact 服务器的配置    relaxed-query-chars: '|,{,},[,]'  #进行get请求到时候 如何参数包含[,{,},] 认为是正常的  port: 7245 # 端口#数据库名:mysql,用户名root,密码123456spring:  servlet:    multipart: #文件的上传配置      max-request-size: 100MB #请求的最大报文长度不能超过100MB      max-file-size: 1024MB #上传的文件最大不能超过1024MB  datasource: #数据库的配置    username: sa #数据库的账号    password: 123456 #数据库的密码    url: jdbc:mysql://localhost:3306/resthome?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai  jackson: # json序列号配置    property-naming-strategy: UPPER_CAMEL_CASE #设置大写开头的命名风格    date-format: yyyy-MM-dd HH:mm:ss #设置标准的时间格式    time-zone: Asia/Shanghai #时间对于的时区mybatis-plus: #操作数据库的ORM框架 mybatis  mapper-locations: mapper/*.xml #配置对于的mapper文件位置  global-config:  #mybatis的全局配置    db-config:    #数据库的配置      table-prefix:   #表前面是否加前缀  如果不配置为空 会导致查询的sql表前面带有特定 前缀  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl    map-underscore-to-camel-case: false         #是否转换成大小写  type-aliases-package: com.example.web.entity  #实体存储的包位置

                          如何找到本项目的数据库配置地址

                          如何启动项目

                          如何判断项目启动成功

                          如何找到文件上传的代码

                          实现逻辑非常清晰命令 标准的上传写法

                          /**     * 批量文件上传     * @param files 上传的文件     * @return     */    @PostMapping("/BatchUpload")    public ArrayList uploadFile(@RequestParam("file") MultipartFile[] files,HttpServletRequest request) {        //定义一个存储文件的列表        ArrayList fileResultDtos = new ArrayList();        //获取项目运行的绝对路径        String filePath = System.getProperty("user.dir");        //循环处理一下文件 是否满足格式,不满足直接报错给前端        for (MultipartFile file : files) {            if (file.isEmpty()) {                throw new CustomException("文件不能为空");            }            if (file.getSize()                 throw new CustomException("上传的文件不能为空!请重新上传");            }        }        //循环保存文件到项目的src\main\resource\static\images路径下        for (MultipartFile file : files) {            //获取文件原始的名称            String originFileName = file.getOriginalFilename();           //随机生成一个时间            Long time = new Date().getTime();            //声明一个保存目录的路径            String dirPath = filePath + "\src\main\resources\static\images\" + time;            //创建一个文件或者文件夹的操作对象            File dirFile = new File(dirPath);            //判断文件是否存在 不存在的话执行下面的代码            if (!dirFile.exists()) {               //创建这个目录                dirFile.mkdirs();            }            //定义一个文件输出流            FileOutputStream fileOutputStream = null;            //try catch处理流  防止报错导致系统崩掉            try {                //创建一个文件                fileOutputStream = new FileOutputStream(dirPath +"\"+ originFileName);                //把前端传入的内容以byte是格式写入到流里面                fileOutputStream.write(file.getBytes());                //结束流                fileOutputStream.flush();                //关闭流                fileOutputStream.close();                //定义一个返回给前端的路径地址                String url = "http://localhost:7245/images/" + time + "/" + originFileName;                //加入到返回的列表中                fileResultDtos.add(new FileResultDto(url, originFileName));            } catch (java.io.IOException e) {                e.printStackTrace();            }        }        return fileResultDtos;    } 
                          h3系统是如何操作数据库的 增删改查(必看)/h3 h4Mybatis/h4 p相信学java这块的 没有人不知道Mybatis/pp本系统使用的Mybatis的官网地址我先给大家/ppMybatis加强版官网地址/p pimg src="https://m.xiaogongju.com.cn/uploads/allimg/20250421/-2504211Z95NX.png" //p h4如何执行增删改查操作的/h4 p官网增删改查文档的超级链接/p h5保存方法/h5 pSave/p pre // 插入一条记录(选择字段,策略插入)boolean save(T entity);// 插入(批量)boolean saveBatch(CollectionT entityList);// 插入(批量)boolean saveBatch(CollectionT entityList, int batchSize);/pre tabletheadtrth类型/thth参数名/thth描述/th/tr/theadtbodytrtdT/tdtdentity/tdtd实体对象/td/trtrtdCollection/tdtdentityList/tdtd实体对象集合/td/trtrtdint/tdtdbatchSize/tdtd插入批次数量/td/tr/tbody/table pSaveOrUpdate/p pre // 插入一条记录(选择字段,策略插入)// TableId 注解存在更新记录,否插入一条记录boolean saveOrUpdate(T entity);// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法boolean saveOrUpdate(T entity, WrapperT updateWrapper);// 批量修改插入boolean saveOrUpdateBatch(CollectionT entityList);// 批量修改插入boolean saveOrUpdateBatch(CollectionT entityList, int batchSize);/pre tabletheadtrth类型/thth参数名/thth描述/th/tr/theadtbodytrtdT/tdtdentity/tdtd实体对象/td/trtrtdWrapperupdateWrapper实体对象封装操作类 UpdateWrapperCollectionentityList实体对象集合intbatchSize插入批次数量
                          删除方法

                          Remove

                          // 根据 queryWrapper 设置的条件,删除记录boolean remove(Wrapper queryWrapper);// 根据 ID 删除boolean removeById(Serializable id);// 根据 columnMap 条件,删除记录boolean removeByMap(Map columnMap);// 删除(根据ID 批量删除)boolean removeByIds(Collection

上一篇:易语言卡密生成攻略,核心技巧轻松掌握!

下一篇:我的世界小白服务器怎么样?