微博项目(总体搭建)

复制代码
1.在resources里面新建一个mappers包,包里面放xml文件
2.在application.properties里面配置数据库和knif4j的链接
复制代码
spring.application.name=工程名字
server.port=8080

spring.datasource.url=数据库链接
spring.datasource.username=数据库用户名
spring.datasource.password=数据库密码

mybatis.mapper-locations=classpath:在resources里面新建的包的名字/*.xml

mybatis.configuration.nullable-on-for-each=true#让数据库的字段和idea里的字段一一映射

logging.level.root=info
logging.level.cn.tedu._04weibo=debug
复制代码
# 启用Knife4j增强功能
knife4j.enable=true

# # 分组配置
# 定义 API 分组的名称(组标识符)
springdoc.group-configs[0].group=default
# 指定该分组包含哪些路径的接口
springdoc.group-configs[0].paths-to-match=/**
# 明确扫描的控制器包路径
springdoc.group-configs[0].packages-to-scan=工程中的controller包的路径

3.创建一个base的包,包里创建一个config的包,在里面创建一个类名为MybatisConfig

复制代码
package cn.tedu._04weibo.base.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("cn.tedu._04weibo.mapper")
public class MybatisConfig {
}

4.在base包里创建一个response的包,包里创建两个类,分别是JsonResult和StatusCode
复制代码
package cn.tedu._04weibo.base.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class JsonResult {
    private Integer status;
    private String message;
    private Object data;


    public JsonResult(StatusCode statusCode) {
        this.status=statusCode.getStatus();
        this.message=statusCode.getMessage();
    }

    public JsonResult(StatusCode statusCode, Object data) {
        this.status=statusCode.getStatus();
        this.message=statusCode.getMessage();
        this.data = data;
    }


    public static JsonResult ok(Object data){
        return  new JsonResult(StatusCode.OPERATION_SUCCESS,data);
    }

    public static JsonResult ok(){
        return ok(null);
    }
}
复制代码
package cn.tedu._04weibo.base.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public enum StatusCode {
    OPERATION_SUCCESS(2001,"操作成功"),
    OPERATION_FAILED(2002,"操作失败"),
    USERNAME_EXIST(1002,"用户名被占用"),
    USERNAME_PASSWORD_ERROR(1001,"用户名或密码错误"),
    NOT_LOGIN(1000,"未登录"),
    VALIDATED_ERROR(6000,"参数校验失败");
    private Integer status;
    private String message;
}

5.在base包里建一个exception的包,里面建一个GlobalExceptionHandler类,用来装非封装和封装参数处理异常

package cn.tedu._05article.base.exception;

import cn.tedu._05article.base.response.JsonResult;
import cn.tedu._05article.base.response.StatusCode;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.swing.text.Style;

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
    //非封装参数异常处理
    @ExceptionHandler
    public JsonResult doHandlerConstraintViolationException(ConstraintViolationException ex){
        String data=ex.getMessage().split(":")[1].trim();
        log.error("ConstraintViolationException = "+data);
        return new JsonResult(StatusCode.VALIDATED_ERROR,data);
    }

    //封装参数异常处理
    @ExceptionHandler
    public JsonResult doHandlerMethodArgumentNotValidException(MethodArgumentNotValidException ex){
        String data=ex.getFieldError().getDefaultMessage();
        log.error("MethodArgumentNotValidException = "+data);
        return  new JsonResult(StatusCode.VALIDATED_ERROR,data);
    }
}


6.在工程里新建controller 、 mapper 、 pojo的包,pojo里面有三个包dto、entity、vo
相关推荐
better_liang2 小时前
每日Java面试场景题知识点之-分布式事务处理
java·微服务·面试·springcloud·分布式事务
执笔论英雄2 小时前
Slime异步原理(单例设计模式)4
开发语言·python·设计模式
L***d6704 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
e***74954 小时前
Modbus报文详解
服务器·开发语言·php
凌波粒4 小时前
Springboot基础教程(3)--自动装配原理/静态资源处理/欢迎页
java·spring boot·后端
lly2024064 小时前
ASP 发送电子邮件详解
开发语言
小徐敲java4 小时前
python使用s7协议与plc进行数据通讯(HslCommunication模拟)
开发语言·python
likuolei4 小时前
XSL-FO 软件
java·开发语言·前端·数据库
凌波粒4 小时前
SpringBoot基础教程(2)--yaml/配置文件注入/数据校验/多环境配置
java·spring boot·后端·spring
6***37944 小时前
PHP在电商中的BigCommerce
开发语言·php