0.Maven配置

Maven的作用,依赖管理。
Maven的配置文件,setting.xml。
我们的java项目,可以使用maven下载我们需要的jar包。我们maven下载jar包,默认是从国外的下载,会有点慢,我们可以用setting设置把他换成国内的镜像,一般是阿里云镜像。
1.idea配置maven

maven home path是你要用的maven,一般idea默认有一个,也可以选择自己电脑上的maven。
user setting file是你的maven的setting文件,用哪个setting.xml就选哪个。
local repository是你用maven下载好的jar都放在哪个位置。
2.idea创建springboot项目

3.引入web依赖

@SpringBootApplication三个注解
springboot项目中@SpringBootApplication包含的三个注解
@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan

建个数据库


可以通过加索引优化数据库

写一个controller(先写配置,再建controller包,写接口类)
等会,得先加web依赖,然后加上之后,maven刷新一下,他自动带上Tomcat服务器、springMVC(如图👇),接下来就做下面的步骤。
1.写配置 application.yml

server:
port: 8081
2.建controller包,写接口类
controller包要放在子包下,否则404找不到类
java
package org.school.xdttest.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//@RequestMapping("/user")
public class UserController {
@GetMapping("/hello")
public String hello(){
return "123";
}
}


这次变成controller调用service
controller
java
package org.school.xdttest.controller;
import org.school.xdttest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//@RequestMapping("/user")
public class UserController {
//注入service
@Autowired
private UserService userService;
@GetMapping("/hello")
public String hello(){
return userService.sayhello();
}
}
接口+实现类
java
package org.school.xdttest.service;
public interface UserService {
String sayhello();
}
java
package org.school.xdttest.service.impl;
import org.school.xdttest.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
public String sayhello() {
return "service返回";
}
}

写一个统一返回结果的Result.java
一般标准的项目里肯定要统一咱们这个返回结果的,code msg data
一般写common包里,这里一般放工具、异常、 统一返回
写Result实体类,我们可以加上Lombok依赖里的@Data注解,这个注解就是专门放在实体类上面,自动帮我们生成代码比如getter setter toString equals hashcode
然后引入lombok依赖的时候,如果继承了父工程,可以省略版本号和scope
java<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
Result要用泛型,因为返回的数据类型不确定。如果不加泛型的话,就要把data属性定义成Object。
Result加泛型<T>就是为了让data可以存放不同类型的数据,使用泛型可以在编译时做类型校验,避免Object带来的强制类型转换,减少运行时类型转换异常。
T和?的区别(泛型T与通配符?)
<T>定义泛型参数,写在类/方法上面,用来声明一个类型变量。T表示一个确定的类型,使用的时候确定是什么
一旦确定是User,整个类里面所有T全部都是User
?通配符,代表任意未知类型。一般用在方法参数,返回值,不能写在类定义上。
T定义模板,?表示不知道是什么类型
java
package org.school.xdttest.common;
import lombok.Data;
@Data
public class Result<T> {
private Integer code;
private String msg;
private T data;
//成功
public static <T> Result<T> success(T data){
Result<T> r=new Result<>();
r.setCode(200);
r.setMsg("操作成功");
r.setData(data);
return r;
}
//失败
public static <T> Result<T> fail(Integer code,String msg){
Result<T> r=new Result<>();
r.setCode(code);
r.setMsg(msg);
return r;
}
}
写一个全局异常处理器GlobalExceptionHandler
这个一般在项目里也得有
package org.school.xdttest.common;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice //全局异常注解
public class GlobalExceptionHandler {
//捕获所有异常
@ExceptionHandler(Exception.class)
public Result<?> handleException(Exception e){
e.printStackTrace();
return Result.fail(500,"服务器内部异常:"+e.getMessage());
}
}
@RestControllerAdvice:对所有Controller做增强,统一捕获异常,返回JSON
@ExceptionHandler(Exception.class)用来拦截对应类型的异常
demo
0.
在原来基础上加上依赖mybatis,sql。
<!-- mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.6</version>
</dependency>
<!-- mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>

