使用Spring Boot搭建一个简单的项目
使用Spring Boot搭建一个简单的项目
前期需要准备:
1.安装MySql
2.安装IDEA
创建项目

依赖选择这三个

代码结构:
pom.xml:依赖配置
springboot启动类:

配置数据库连接信息:

spring.application.name=springboot_mankiw
#当前web应用端口
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_mankiw?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=111111
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#显示sql
spring.jpa.show-sql=true
#格式化sql 没有这个sql都显示在一行
spring.jpa.properties.hibernate.format_sql=true
#自动更新数据库表结构
spring.jpa.hibernate.ddl-auto=update
创建MySql数据库;通过代码方式动态建表
创建pojo类
创建user类
@Table:将User类映射为一个表,后面参数:指定表名
@Id:设置主键id
@GeneratedValue(strategy = GenerationType.IDENTITY):id生成策略
@Column(name="user_id"):修改字段名
//spring data jpa映射为表
@Table(name = "tb_user")
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_id")
private Integer id;
private String name;
private String password;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
自动生成get;set;方法快捷键:alt + insert
需要在配置文件中添加以下内容,在启动项目时才会自动创建出表。
#自动更新数据库表结构
spring.jpa.hibernate.ddl-auto=update
这一步结束后,就会在数据库中创建出对应的表。
创建Controllers、Services、repository
0.创建ResponseMessage类,统一接口返回类型
package com.mankiw.springboot_mankiw.pojo;
import org.springframework.http.HttpStatus;
public class ResponseMessage<T> {
private Integer code;
private String message;
private T data;
public ResponseMessage(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
//接口请求成功
public static <T> ResponseMessage success(T data) {
return new ResponseMessage(HttpStatus.OK.value(), "success", data);
}
}
UserDTO类:这个类的对象用于接收请求参数
package com.mankiw.springboot_mankiw.pojo.dto;
public class UserDto {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
private String name;
private String password;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
向user表中插入一条数据
步骤:
- 创建repository
- 创建service
- 创建controller
- 将reposity service分别注入service和controller
1.创建UserController
UserController上需要两个注解:
@RestController//接口方法返回对象,转换成json文本
@RequestMapping("/user") //localhost:8088/user/
@RestController//接口方法返回对象,转换成json文本
@RequestMapping("/user") //localhost:8088/user/
public class UserController {
@Autowired//自动装配
IUserService userService;
@PostMapping
public ResponseMessage<String> add(@RequestBody UserDto user) {//RequestBody注解将json自动转成对象
User userNew = userService.add(user);
return "";
}
}
2.创建UserService,在类上需要添加@Service注解
创建IUserService接口
public interface IUserService {
/*插入用户*/
User add(UserDto user);
}
将UserRepository自动装配进UserService
@Service //spring 的bean
public class UserService implements IUserService {
@Autowired
UserRepository userRepository;
@Override
public User add(UserDto user) {
User userPojo = new User();
//拷贝对象
BeanUtils.copyProperties(user, userPojo);
//save方法 add可以用,update也可以用,根据是否有id判断是update还是add
//返回User对象
return userRepository.save(userPojo);
}
}
3.创建user repository
由于使用了spring data jpa,所以repository接口只需要继承CrudRepository接口,CrudRepository接口的泛型:第一个是需要操作的对象是什么类型;第二个是这个对象的主键id类型。
不需要写每个方法具体的实现。
@Repository//spring bean
//User 需要操作那个类
//Integer 当前类的主键id是什么类型
//为什么不同的类需要加上不同的注解?使用commponent也可以,Reposity Service注解是为了是类的职责更加明确
public interface UserRepository extends CrudRepository<User, Integer> {
}
通过上面步骤即可通过请求向表中添加一条user数据。
可能遇见的问题:
1.启动项目后,访问接口返回404:
原因:
1.Controller 没有与springboot启动类放在同一个文件夹下。
2.在启动类上添加注解,让springboot扫描这个包:
@ComponentScan(basePackages = "com.mankiw.Controller")
3.springboot项目启动后,使用http请求接口。
2.启动项目后未创建出User表
原因:跟问题1是一个原因。
我希望有一个统一的异常处理类
@RestControllerAdvice//所有的统一处理都可以写在这个类中
@ExceptionHandler({Exception.class})//什么异常的统一处理 Exception.class为所有的异常做统一处理。(这个注解的参数是:希望哪种异常被处理)
@RestControllerAdvice //统一处理
public class GlobalExceptionHandlerAdvice {
Logger log = LoggerFactory.getLogger(GlobalExceptionHandlerAdvice.class);
@ExceptionHandler({Exception.class})//什么异常的统一处理 Exception.class为所有的异常做统一处理
public ResponseMessage handleException(Exception e, HttpServletRequest request, HttpServletResponse response) {
log.error("统一异常", e);
return new ResponseMessage(500,"error",null);
}
}

浙公网安备 33010602011771号