目录
序言
思维导图
开发流程
新建SpringBoot并整合MybatisPlus
新建SpringBoot
整合MybatisPlus
统一结果封装
全局异常处理
引入数据库
序言
在一个充满阳光的早晨,一位对编程世界充满好奇的年轻人小小白,怀揣着梦想与激情,踏上了学习Java编程的征程。他/她深知,在这个信息化时代,编程技能的重要性不言而喻。然而,作为一个编程小白,他面临着无数未知与挑战。在这篇成长记中,我们将紧紧跟随小小白的脚步,见证他/她从Java小白成长为大佬的蜕变历程。接下来,让我们出发吧 ····👻👻
思维导图
首页,要开发一个Java项目,我们要事先搭建思维导图,这样我们可以更好地梳理出项目的结构,前期可以做到一目了然,分步骤去写好每一块内容,避免出现这块写一点,又跳到那块再写,反复横跳·····后期完成也可以进行更好地优化和迭代。简而言之,高效 高效 高效
这是此篇博客的思维导图,内容主要针对后端
讲解了此次项目的学习重点、项目功能、技术栈以及开发流程,接下来就让我们跟随小小白的视角进入开发流程的探索吧!
开发流程
新建SpringBoot并整合MybatisPlus
首先推荐大家在IDEA中使用自己的maven包,好处就是可以提高代码的复用性等等···比如多个项目都需要用到某些工具类、配置或者业务逻辑、可以将这些代码打包成maven依赖,多个项目复用,避免重复造轮子的工作... 首页点击File中的Settings,框中搜索maven,点击···选中包,再勾选Override,最后Apply-ok就成功了
如果已经再用,就直接看"新建SpringBoot",没有maven下面有配置教程
(此图是已有maven,没有maven在图片下方哦!)
如果没有自己的maven的话: 点击下面maven官网链接下载一个就是
Maven – Maven Releases History
我的是之前下的3.6.3🤪🤪
下载并解压后还需配置环境变量:1、点开此电脑,右键点击属性
2、点击高级系统设置,进去点击框右下角环境变量
3、点进去后选择下面的系统变量(S),点击新建,对应输入,其中值是压缩后maven包路径,然后点击确定,再选中Path,点击编辑-新建,输入对应的值,最后确定-确定···
4、检查是否配置成功:点击windows+R(也可以是屏幕下方搜索框中)输入cmd进入命令行,输入:mvn -v 此时会显示配置的版本信息,如果出现错误,大部分是java_home变量的事,请仔细检查 解决不了可以私信我帮忙💕💕
5、配置文件:我们需要需改maven/conf/settings配置文件,也就是解压后的maven包,点进去,再点conf/settings,来修改maven的一些默认配置。我们主要修改的有三个配置:1.依赖本地缓存位置(本地仓库位置)2.maven下载镜像3.maven选用编译项目的jdk版本!
注意事项:修改配置时至少像这样可以显示行数!
此次可以自行选择位置
由于我下载的jdk为17版本,jdk不一样改改数字就行
接下来就是
新建SpringBoot
1、File-New-Project
2、图片步骤,Location为项目存储路径,包名记得删去一部分
3、这里可以勾选依赖,比如图片中勾选的,简化代码的
4、点击Create后,就成功了,记得改自己maven 包
点击File中的Settings,框中搜索maven,点击···选中包,再勾选Override,最后Apply-ok就成功了
现在,一个SpringBoot工程就搭建成功啦
整合MybatisPlus
现在就可以进行整合啦! 下面是MybatisPlus官网,可以了解一下
MyBatis-Plus 🚀 为简化开发而生
首先得添加一个pom依赖
<!--整合mybatis-plus https://baomidou.com -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version>
</dependency>
然后在启动类添加@MapperScan,括号内的内容为自己建的包名/mapper(也是包名)
现在MybatisPlus就集成好啦! 可是小小白在问,为什么要集成它呢?首先来解释一下这个注解@MapperScan
(1)自动创建代理实现:Mybatis-Plus通过@MapperScan
注解指定的包路径,自动为这些接口创建代理实现。这意味着你不需要为每个Mapper接口手动编写实现类
(2)简化配置:通过在启动类上指定@MapperScan
,你不需要在Mapper接口上逐个添加@Mapper
注解,从而简化了配置。了解ssm(Spring + SpringMVC + Mybatis)的小伙伴都知道,需要写很多的配置信息,这里就不给大家展示了,可以下来搜搜看。目前只用一个注解就可实现
作用:BaseMapper<T>中,T是实体类名
对于操作的话,下面讲到了再和大家详细讲解,后面都会一一用到
统一结果封装
为什么我们要统一封装呢?因为现在大多数主流项目都是前后端分离模式开发,当前端请求发来的时候,我们可能在controller接口返回任何类型,例如列表、对象、字符串···这种不同的类型再加上报错异常,就造成了返回给前端的内容多种多样,所以得进行统一封装...
代码展示:AppExceptionCodeMsg是定义的业务异常(下面一张图片有)
package com.aurora.common; //自己的包名import com.aurora.exception.AppExceptionCodeMsg;
import lombok.Getter;@Getter
public class Result<T> {/*** 统一结果封装*///成功状态码及信息 响应数据private int code = 200;private String msg = "success";private T data;//构造方法public Result(int code,String msg,T data){this.code = code;this.msg = msg;this.data = data;}//静态方法public static <T> Result<T> success(T data){return new Result<>(200,"success",data);}public static <T> Result<T> success(String msg , T data){return new Result<>(200,msg,data);}public static <T> Result<T> error(AppExceptionCodeMsg appExceptionCodeMsg){return new Result<>(appExceptionCodeMsg.getCode(),appExceptionCodeMsg.getMsg(),null);}public static <T> Result<T> error(int code,String msg){return new Result<>(code,msg,null);}
}
如果看不懂的话,没关系,小小白为大家整理了代码的逐行注解(每行都有注释),点击下方
链接:如何优雅地统一异常处理和信息返回-CSDN博客(代码讲解包括全局异常处理)
全局异常处理
代码展示:这是业务有关的异常,可以在这里对业务有关的异常进行统一处理
package com.aurora.exception;import lombok.Getter;@Getter
public enum AppExceptionCodeMsg {/*** 业务有关的异常*///错误码10000 ,验证码无效INVALID_CODE(10000,"验证码错误"),//错误码10001 ,用户不存在USERNAME_NOT_EXIST(10001,"用户不存在");private final int code;private final String msg;//构造方法 初始化错误码和信息AppExceptionCodeMsg(int code,String msg){this.code = code;this.msg = msg;}
}
代码展示:自定义异常
package com.aurora.exception;import lombok.Getter;@Getter
public class AppException extends RuntimeException{/*** 自定义异常*/private int code = 500;private String msg = "服务器异常";public AppException(AppExceptionCodeMsg appExceptionCodeMsg){super();this.code = appExceptionCodeMsg.getCode();this.msg = appExceptionCodeMsg.getMsg();}public AppException(int code,String msg){super();this.code = code;this.msg = msg;}
}
代码展示:全局异常捕获
package com.aurora.exception;import com.aurora.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvice
public class GlobalExceptionHandler {/*** 全局异常处理 捕获程序中未处理的异常 并统一响应*///异常处理方法 接收任何类型的Exception作为参数@ExceptionHandler(value = Exception.class)@ResponseBodypublic Result exceptionHandler(Exception e){//自定义异常if(e instanceof AppException){AppException appException = (AppException) e;return Result.error(appException.getCode(), appException.getMsg());}//如果抛出的是其他异常 (例如,数据库链接失败)则返回默认return Result.error(500,"服务器异常");}
}
提示:这四段代码在上方一个链接都有讲解 😀😀😀
通过这四段代码,可以构成一个较为完善的异常处理和结果封装机制.....
引入数据库
这里暂时不会用到,先让大家了解一下,后面存储前端数据再用🥰🥰🥰
现在我们在idea添加一下数据库(mysql),没有的话大家可以去官网下载一个,这里只给大家提供链接, 注意:不要下载最新版的数据库,有些地方可能出现问题
MySQL :: MySQL Downloads
下载免费的社区版就是,不会操作的话找下CSDN看看
首先选择右侧的这个仓库(我的在右侧)
然后 点击 + 再选中 再选择MySQL
配置信息:默认用户是root,密码是安装mysql时设置的
点击Test···之前要先启动(mysql)数据库,类似这样,才能连接成功
还得给pom.xml引入一下数据库依赖,不然.yml文件driver-class-name会爆红
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
</dependency>
这是application.yml配置信息:如果是后缀是.properties记得改成yml
格式:写前空一格 aurora是我的数据库名,你们的就是你们的名
# 端口号
server:port: 8081
# DataSource Config
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/aurora?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 自己的密码
mybatis-plus:mapper-locations: classpath*:/mapper/**Mapper.xml
现在就可以在controller简单测试一下了(数据库在这里暂时不会用到)
先演示代码:
package com.aurora.controller;import com.aurora.common.Result;
import com.aurora.exception.AppException;
import com.aurora.exception.AppExceptionCodeMsg;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
import java.util.List;@RestController
public class TestController {@GetMapping("/test")public Result<String> test_01(String name){if("ok".equals(name)){return Result.success("Thanks OK!");}if("error".equals(name)){throw new AppException(AppExceptionCodeMsg.USERNAME_NOT_EXIST);}if("1111".equals(name)){throw new AppException(AppExceptionCodeMsg.INVALID_CODE);}return Result.success("default");}@GetMapping("/list")public Result<List> test_02(){List<String> list = Arrays.asList("张三","李四","王五");return Result.success(list);}
}
先把启动类运行起来:可以点击第一个三角形
然后在浏览器输入端口号+地址(@GetMapping里面就是)
(1)路径和参数不同,返回的状态码和数据就不同(看实际)
(2)路径和参数不同,返回的状态码和数据就不同(看实际)
(3)路径和参数不同,返回的状态码和数据就不同(看实际)
(4)路径和参数不同,返回的状态码和数据就不同(看实际)
到这里,Java小白成长记(创作笔记一)就结束了,主要给大家讲解了SpringBoot并整合了MybatisPlus,还有结果封装和异常处理机制.....让我们和小小白一起坚持学习吧🙆🙆♂️