[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-public-c3XrOTcU":3,"public-project-articles-c3XrOTcU":17},{"id":4,"uuid":5,"project_id":6,"title":7,"content":8,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},509,"c3XrOTcU",47,"08. 从0带你搭建SpringBoot3工程","**基础必备知识： JavaSE**\n\n## 编程软件\n\nIDEA2023 以上的版本、Maven、JDK21\n\n## 创建 SpringBoot 工程\n\n新建 SpringBoot3 工程\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729060789746-763ab5a2-a4d5-4173-87a9-0a6fa254070e.png)\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729060967646-4528402c-4878-42b8-a6d7-a0640fb75462.png)\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061177146-ea4d0c40-ad10-40c3-a96d-b47a4c22455e.png)\n\napplication.properties -> application.yml\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061249758-31ce9fbd-cc10-4a15-b0f7-57a6d8883adf.png)\n\n设置编码\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061384319-7838bd4b-32f7-4e42-bd97-baa33371e409.png)\n\n配置 maven![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061547482-d8aace24-c7aa-4430-badd-646378a6eec0.png)\n\n\n\n加载 maven 依赖\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061578178-344603a2-fd03-45cf-b6fe-fab6c389736d.png)\n\n右下角会下载 maven 的依赖\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061629413-6c5b5eae-7674-4812-9690-caf007dc0f15.png)\n\n启动 Springboot 工程\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061790687-78d30503-184a-4c43-8633-75c7ab10773e.png)\n\n\n\n启动时会打印一些参数\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061868183-75041920-8d3f-4d61-819a-88a74308c8e2.png)\n\n没配置数据库\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729061895858-6d31f3d1-05d7-4ad9-83b8-6264d1cb263b.png)\n\n## 配置 SpringBoot 工程\n\n```java\nserver:\n  port: 9090\n\n# 数据库配置\nspring:\n  datasource:\n    driver-class-name: com.mysql.cj.jdbc.Driver\n    username: root\n    password: 123456\n    url: jdbc:mysql:\u002F\u002Flocalhost:3306\u002Fxm-pro?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true\n```\n\n注意：数据库密码如果以 0 开头，那你必须加单引号，否则会自动去除 0\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729062065775-c0b87816-24d7-4cfb-bed1-6a0b8feb9ec0.png)\n\n## 写一个测试接口 say: hello\n\n```java\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\npublic class WebController {\n\n    @GetMapping(\"\u002Fhello\")\n    public String hello() {\n        return \"Hello 青哥哥\";\n    }\n\n}\n```\n\n## 统一返回包装类 Result\n\n> **\u003Cfont style=\"color:#DF2A3F;\">包装类：作用是统一后端返回的数据类型\u003C\u002Ffont>**\n\n```java\npackage com.example.common;\n\n\u002F**\n * 统一返回的包装类\n *\u002F\npublic class Result {\n    private String code;\n    private String msg;\n    private Object data;\n\n    public static Result success() {\n        Result result = new Result();\n        result.setCode(\"200\");\n        result.setMsg(\"请求成功\");\n        return result;\n    }\n\n    public static Result success(Object data) {\n        Result result = success();\n        result.setData(data);\n        return result;\n    }\n\n    public static Result error() {\n        Result result = new Result();\n        result.setCode(\"500\");\n        result.setMsg(\"系统错误\");\n        return result;\n    }\n\n    public static Result error(String code, String msg) {\n        Result result = new Result();\n        result.setCode(code);\n        result.setMsg(msg);\n        return result;\n    }\n\n    public String getCode() {\n        return code;\n    }\n\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    public String getMsg() {\n        return msg;\n    }\n\n    public void setMsg(String msg) {\n        this.msg = msg;\n    }\n\n    public Object getData() {\n        return data;\n    }\n\n    public void setData(Object data) {\n        this.data = data;\n    }\n}\n\n```\n\n## 全局异常处理\n\nGlobalExceptionHandler\n\n```java\nimport com.example.common.Result;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\n@ControllerAdvice(\"com.example.controller\")\npublic class GlobalExceptionHandler {\n\n    @ExceptionHandler(Exception.class)\n    @ResponseBody \u002F\u002F 返回json串\n    public Result error(Exception e) {\n        return Result.error();\n    }\n}\n```\n\n****\n\n**分析控制台错误是你的家常便饭**\n\n**分析控制台错误是你的家常便饭**\n\n**分析控制台错误是你的家常便饭**\n\n![](https:\u002F\u002Fcdn.nlark.com\u002Fyuque\u002F0\u002F2024\u002Fpng\u002F751015\u002F1729063595596-9ff699c5-ec8f-4401-977e-a7ca29886baf.png)\n\n\n\n写代码 过程就是你不断改正错误  改成 BUG 的过程\n\n## 自定义异常\n\nCustomException\n\n```java\npublic class CustomException extends RuntimeException{\n    private String code;\n    private String msg;\n\n    public CustomException(String code, String msg) {\n        this.code = code;\n        this.msg = msg;\n    }\n\n    public String getCode() {\n        return code;\n    }\n\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    public String getMsg() {\n        return msg;\n    }\n\n    public void setMsg(String msg) {\n        this.msg = msg;\n    }\n}\n\n```\n\n## WebController\n\n```java\npackage com.example.controller;\n\nimport com.example.common.Result;\nimport com.example.exception.CustomException;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n@RestController\npublic class WebController {\n\n    @GetMapping(\"\u002Fhello\")\n    public String hello() {\n        return \"Hello 青哥哥\";\n    }\n\n    @GetMapping(\"\u002Fweather\")\n    public Result weather() {\n        return Result.success(\"今天天气：晴 23摄氏度\");\n    }\n\n    @GetMapping(\"\u002Fcount\")\n    public Result count() {\n        throw new CustomException(\"400\", \"错误！禁止请求\");\n\u002F\u002F        throw new RuntimeException(\"错误！禁止请求\");\n    }\n\n    @GetMapping(\"\u002Fmap\")\n    public Result map() {\n        HashMap\u003CString, Object> map = new HashMap\u003C>();\n        map.put(\"name\", \"青哥哥\");\n        map.put(\"age\", 32);\n        return Result.success(map);\n    }\n}\n\n```\n\n## 学习的真谛\n\n坚持！再坚持！\n\n用正确的方法  跟正确的老师学习\n\n","coding",1,9397,992,"2024-10-16 15:43:13","2026-05-03 22:49:02","1天学会SpringBoot3+Vue3实战项目开发","learn-springboot-vue",{"project":18,"items":19},{"id":6,"title":15,"slug":16},[20,27,34,42,49,56,63,70,71,78,85,92,99,106,113,120],{"id":21,"uuid":22,"project_id":6,"title":23,"type":9,"status":10,"public_enabled":10,"views":24,"sort":25,"created_at":26,"updated_at":14,"project_title":15,"project_slug":16},475,"OgrBbww7","01. 1天学会SpringBoot3+Vue3实战项目课程介绍",17862,910,"2024-10-11 16:50:50",{"id":28,"uuid":29,"project_id":6,"title":30,"type":9,"status":10,"public_enabled":10,"views":31,"sort":32,"created_at":33,"updated_at":14,"project_title":15,"project_slug":16},476,"U58ISSFR","02. 从0带你搭建Vue3工程",12899,911,"2024-10-11 16:47:49",{"id":35,"uuid":36,"project_id":6,"title":37,"type":9,"status":10,"public_enabled":10,"views":38,"sort":39,"created_at":40,"updated_at":41,"project_title":15,"project_slug":16},478,"tK3YUYq8","03. Vue3集成Element-Plus",9899,919,"2024-10-14 22:18:17","2026-05-07 15:33:28.189425+00",{"id":43,"uuid":44,"project_id":6,"title":45,"type":9,"status":10,"public_enabled":10,"views":46,"sort":47,"created_at":48,"updated_at":14,"project_title":15,"project_slug":16},488,"J2MV6UAG","04. Element-Plus组件使用速成",8093,938,"2024-10-11 16:49:40",{"id":50,"uuid":51,"project_id":6,"title":52,"type":9,"status":10,"public_enabled":10,"views":53,"sort":54,"created_at":55,"updated_at":14,"project_title":15,"project_slug":16},489,"zGi4XJsb","05. Vue3集成Vue-Router实现路由跳转",7443,939,"2024-10-12 15:44:41",{"id":57,"uuid":58,"project_id":6,"title":59,"type":9,"status":10,"public_enabled":10,"views":60,"sort":61,"created_at":62,"updated_at":14,"project_title":15,"project_slug":16},499,"cwsTdvo9","06. Vue3搭建后台管理系统",7421,964,"2024-10-14 16:02:49",{"id":64,"uuid":65,"project_id":6,"title":66,"type":9,"status":10,"public_enabled":10,"views":67,"sort":68,"created_at":69,"updated_at":14,"project_title":15,"project_slug":16},501,"JlXltpKA","07. Mysql语法简介（速成）",5208,973,"2024-10-15 16:52:18",{"id":4,"uuid":5,"project_id":6,"title":7,"type":9,"status":10,"public_enabled":10,"views":11,"sort":12,"created_at":13,"updated_at":14,"project_title":15,"project_slug":16},{"id":72,"uuid":73,"project_id":6,"title":74,"type":9,"status":10,"public_enabled":10,"views":75,"sort":76,"created_at":77,"updated_at":14,"project_title":15,"project_slug":16},516,"QsKwbDX7","09. SpringBoot3集成Mybatis",10348,1004,"2024-10-17 16:36:15",{"id":79,"uuid":80,"project_id":6,"title":81,"type":9,"status":10,"public_enabled":10,"views":82,"sort":83,"created_at":84,"updated_at":14,"project_title":15,"project_slug":16},519,"qKG13ySo","10. SpringBoot3+Vue3实现基本的增删改查功能",9572,1013,"2024-10-18 16:34:55",{"id":86,"uuid":87,"project_id":6,"title":88,"type":9,"status":10,"public_enabled":10,"views":89,"sort":90,"created_at":91,"updated_at":14,"project_title":15,"project_slug":16},527,"7uED9n7e","11. Vue3开发登录注册页面",7106,1031,"2024-10-21 17:35:30",{"id":93,"uuid":94,"project_id":6,"title":95,"type":9,"status":10,"public_enabled":10,"views":96,"sort":97,"created_at":98,"updated_at":14,"project_title":15,"project_slug":16},535,"poUfWrWc","12. Vue3管理系统开发个人信息、修改密码页面",5777,1050,"2024-10-22 17:50:30",{"id":100,"uuid":101,"project_id":6,"title":102,"type":9,"status":10,"public_enabled":10,"views":103,"sort":104,"created_at":105,"updated_at":14,"project_title":15,"project_slug":16},542,"FxHR3hNR","13. SpringBoot3+Vue3实现文件上传下载功能",4489,1057,"2024-10-23 17:31:02",{"id":107,"uuid":108,"project_id":6,"title":109,"type":9,"status":10,"public_enabled":10,"views":110,"sort":111,"created_at":112,"updated_at":14,"project_title":15,"project_slug":16},548,"VPZNSTxr","14. SpringBoot3+Vue3实现富文本编辑器功能",3931,1072,"2024-10-24 17:38:21",{"id":114,"uuid":115,"project_id":6,"title":116,"type":9,"status":10,"public_enabled":10,"views":117,"sort":118,"created_at":119,"updated_at":14,"project_title":15,"project_slug":16},555,"nal0yVxM","15. SpringBoot3+Vue3实现数据批量导入导出功能",3577,1090,"2024-10-28 17:39:21",{"id":121,"uuid":122,"project_id":6,"title":123,"type":9,"status":10,"public_enabled":10,"views":124,"sort":125,"created_at":126,"updated_at":14,"project_title":15,"project_slug":16},564,"XxSPPFGi","16. SpringBoot3+Vue3实现数据统计图表功能",4236,1109,"2025-01-09 09:40:57"]