SpringBoot是一个脚手架,用于快速搭建一个基于Spring的web应用,开箱即用!创建即可开发业务代码。其设计目的是用来简化 Spring 应用的初始搭建以及开发过程

1、Controller 层
package com.example.demo2.controller;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.ResponseMessage;
import com.example.demo2.pojo.User;
import com.example.demo2.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController  //接口返回对象 转换成Json文本
@RequestMapping("/user")    //localhost:8088/user/**

public class UserController {

    @Autowired
    IUserService userService;


    @PostMapping("Add")
    public  ResponseMessage Add(@Validated @RequestBody UserDto user){

        User userPojo=userService.Add(user);
        return ResponseMessage.success(userPojo);
     }

    @GetMapping("/{userId}")
     public  ResponseMessage Get(@PathVariable Integer userId){
         User userPojo= userService.GetUser(userId);
         return ResponseMessage.success(userPojo);
    }

    @PutMapping("Eidt")
    public  ResponseMessage Eidt(@Validated @RequestBody UserDto user){

        User userPojo=userService.Eidt(user);
        return ResponseMessage.success(userPojo);
    }

    @DeleteMapping("/{userId}")
    public  ResponseMessage Delete(@PathVariable Integer userId){
        userService.Delete(userId);
        return ResponseMessage.success();
    }
}
Service层
package com.example.demo2.controller;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.ResponseMessage;
import com.example.demo2.pojo.User;
import com.example.demo2.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController  //接口返回对象 转换成Json文本
@RequestMapping("/user")    //localhost:8088/user/**

public class UserController {

    @Autowired
    IUserService userService;


    @PostMapping("Add")
    public  ResponseMessage Add(@Validated @RequestBody UserDto user){

        User userPojo=userService.Add(user);
        return ResponseMessage.success(userPojo);
     }

    @GetMapping("/{userId}")
     public  ResponseMessage Get(@PathVariable Integer userId){
         User userPojo= userService.GetUser(userId);
         return ResponseMessage.success(userPojo);
    }

    @PutMapping("Eidt")
    public  ResponseMessage Eidt(@Validated @RequestBody UserDto user){

        User userPojo=userService.Eidt(user);
        return ResponseMessage.success(userPojo);
    }

    @DeleteMapping("/{userId}")
    public  ResponseMessage Delete(@PathVariable Integer userId){
        userService.Delete(userId);
        return ResponseMessage.success();
    }
}
IUserService 接口定义
package com.example.demo2.service;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.User;

public interface IUserService {


    User Add(UserDto user);

    User GetUser(Integer userId);

    User Eidt(UserDto user);

    void Delete(Integer userId);
}
Repository数据库访问层
package com.example.demo2.repository;

import com.example.demo2.pojo.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository //spring bean
public interface IUserRepository extends CrudRepository<User, Integer> {
}

model层

package com.example.demo2.Model;

import jakarta.persistence.*;

@Table(name = "tb_user")
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_Id")
    private Integer userId;
    private String userName;
    private String passWord;
    private String email;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", userId=" + userId +
                ", passWord='" + passWord + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

Dto 用于model数据转换

package com.example.demo2.Model.Dto;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import org.hibernate.validator.constraints.Length;

public class UserDto {
    private Integer userId;
    @NotBlank(message = "用户名不能为空")
    private String userName;

    @NotBlank(message = "密码不能为空")
    @Length(min=6, max=12)
    private String passWord;

    @Email(message ="email格式不正确")
    private String email;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    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 "UserDto{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

定义一个ResponseMessage用于接口统一格式响应

package com.example.demo2.Model;

import org.springframework.http.HttpStatus;

public class ResponseMessage<T>{
    private int code;
    private String message;
    private T data;

    public ResponseMessage(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }


    public  static <T>ResponseMessage<T> success(T data) {

        return new ResponseMessage<T>(HttpStatus.OK.value(), "success", data);
    }

    public  static <T>ResponseMessage<T> success() {

        return new ResponseMessage<T>(HttpStatus.OK.value(), "success", null);
    }

    public int getCode() {
        return code;
    }

    public void setCode(int 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;
    }

}
定义一个类GlobalExceptionHanderAdvice用于异常统一处理
package com.example.demo2.execption;

import com.example.demo2.Model.ResponseMessage;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  //统一处理异常
public class GlobalExceptionHanderAdvice {

    Logger log=  LoggerFactory.getLogger(GlobalExceptionHanderAdvice.class);


    @ExceptionHandler({Exception.class})  //什么异常的统一处理
    public ResponseMessage handleException(Exception e, HttpServletRequest request){
        log.error("统一异常",e);
        return new ResponseMessage<>(500,"error",null);

    }
}

配置swagger文档 ,在pom.xml中 添加依赖, 需要注意和你的spring boot 版本

       <!-- Springdoc OpenAPI -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>3.0.0</version> <!-- 确认与Spring Boot 4.0.2兼容 -->
        </dependency>

swagger访问地址 :localhost:8088/swagger-ui/index.html 效果图

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐