0
点赞
收藏
分享

微信扫一扫

框架系列二、项目代码结构及第一个接口

八卦城的酒 2022-03-31 阅读 61
spring boot

idea的相关插件

工欲善其事必先利其器,想要更高效、快速的进行代码开发,则有些插件是必不可少的。

lombok插件

安装此插件后,在实体中不再需要写get、set、toString等,只需要一个注解@Data搞定,提升代码的简洁度。
在这里插入图片描述
在这里插入图片描述

Free MyBatis Tool

主要作用:mapper.java和mapper.xml之间的互相跳转;根据数据库表生成对应实体。
在这里插入图片描述
在这里插入图片描述

MyBatis Log Free

格式化打印出可以直接执行的sql语句,不需要自己替换占位符。
在这里插入图片描述
需要添加yml配置项:

#开启数据库语句控制台日志(生产环境下建议关闭)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl    

执行sql之后打印执行的语句:
在这里插入图片描述

项目代码结构

在mvc三层架构基础上适当进行扩展,最终的代码目录结构如下:
在这里插入图片描述
由上往下进行解释:
config:项目的配置类和过滤器等
controller:控制层
entity:数据库实体-和数据库表一一对应
manager:service层的进一步提取,bo放公共的实体;enums放枚举;sys放系统模块的公共逻辑等业务;utils放工具类
mapper:持久层接口
pojo:除entity之外的实体对象,bo(business object)放不便分类到其他模块的业务对象;qo(query object)放查询的请求实体;ro(result object)放返回的业务实体;so(save object)放保存操作的业务实体
service:业务逻辑层,impl下放业务逻辑实现
SysJavaApplication:项目启动入口类
resources下的mapper:持久层xml
application.yml:项目配置
test:单元测试
pom.xml:相关依赖

引入相关依赖

引入mybatis-plus

mybatis在java程序员心中的地位是毋庸置疑的,而作为mybatis增强版本的mybatis-plus,无疑使用起来更加方便。直接引入最新版本的依赖:

<!-- mybatis-plus依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

引入knife4j

Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,,直接引入最新版(官网看版本号):

<!-- Swagger生成Api文档的增强解决方案 -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

knife4j已经包含了swagger的相关包,不需要手动引入swagger,否则可能会造成冲突。此时需要添加一个配置,否则会启动保存(可能以后版本会解决此问题,若启动正常请忽略):

# 修改路径匹配模式(适配swagger3)
spring:
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

简单配置swagger3:

@EnableOpenApi
@Configuration
public class SwaggerConfiguration implements WebMvcConfigurer {

    /*
    http://localhost:8080/sysjava/doc.html
    http://localhost:8080/sysjava/swagger-ui/
     */
    @Bean
    public Docket createRestApi() {
        /*
          DocumentationType.OAS_30:使用3.0版本
          指定controller包:com.yd.sysjava.controller
          所有路径
         */
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select().apis(RequestHandlerSelectors.basePackage("com.yd.sysjava.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("sys-java api")
                .contact(new Contact("pansong", "", "1334881756@qq.com"))
                .description("this is a project api document for sys-java ")
                .version("1.0")
                .build();
    }
}

通过以下路径访问,愉快的进行接口调试吧:
http://localhost:8080/sysjava/doc.html

添加第一个接口

添加第一张表

数据库的设计在后面会单独进行讲解,此处先添加一张简单的测试表以供使用:

CREATE TABLE `sys_user` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `full_name` varchar(90) NOT NULL COMMENT '姓名',
  `login_name` varchar(90) NOT NULL COMMENT '登录名',
  `password` varchar(90) NOT NULL COMMENT '登录密码',
  `tenant_id` int NOT NULL COMMENT '租户号',
  `version` int NOT NULL COMMENT '版本号(乐观锁)',
  `created_by` int NOT NULL COMMENT '创建人',
  `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_by` int NOT NULL COMMENT '更新人',
  `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户信息';

生成entity实体和持久层

idea连接数据库,不会操作的同学自行查询其他文章。利用之前添加的插件Free MyBatis Tool生成相关代码:
找到sys_user表,右击->MyBatis generator,生成代码之后拷贝到对应位置。删除mapper中相关的方法,之后需要得时候再添加进去。

在这里插入图片描述
在这里插入图片描述
最终的三个类:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

service层

新增一个addUser接口做测试(可以链式调用是因为实体上加了@Accessors(chain = true)):
在这里插入图片描述
在这里插入图片描述

controller层

在这里插入图片描述
Result类是自定义的请求返回封装类,源码(不完整):

@Data
public class Result {
    private Integer status;
    private String msg;
    private Object data;

    public static Result success() {
        return new Result(ResultCode.SUCCESS.getCode());
    }

    public static Result success(String msg) {
        return new Result(ResultCode.SUCCESS.getCode(), msg);
    }

    public static Result success(String msg, Object data) {
        return new Result(ResultCode.SUCCESS.getCode(), msg, data);
    }

    public static Result success(Object data) {
        return new Result(ResultCode.SUCCESS.getCode(),
                ResultMsg.SUCCESS.getMsg(), data);
    }

    public Result(Integer status) {
        this.status = status;
    }

    public Result(Integer status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    public Result(Integer status, String msg, Object data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }
}

访问API文档地址

访问之前的http://localhost:8080/sysjava/doc.html,查看效果,并且进行添加用户的测试,查看打印日志,并且查看数据库是否添加成功。
在这里插入图片描述
在这里插入图片描述

小结

  • 框架系列一的数据源配置有误,不知道有没有坑了同学们[表情]:
    在这里插入图片描述
  • 没有指定数据库连接池?springboot默认使用了HikariCP连接池,所以不需要指定(除非需要使用其他的)
举报

相关推荐

0 条评论