首页 > 数据库 >整合springboot+mybatisplus+mysql+swagger,开发后端接口

整合springboot+mybatisplus+mysql+swagger,开发后端接口

时间:2023-12-03 12:23:04浏览次数:45  
标签:mybatisplus springboot mysql kye result org import com Result

一、版本

1. springboot:2.7.8

2. mybatisplus:3.5.3.1

3. mysql:8.0

4. swagger:3.0

二、建立数据表(省略表结构)

三、新建maven工程及springboot项目

1. 完成后的项目目录:

2. maven工程的pom文件引入依赖:

点击查看代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>javaTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>18</maven.compiler.source>
        <maven.compiler.target>18</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath/>
    </parent>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        <!-- mybatis-plus代码自动生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--lombok用来简化实体类-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!--解决代码生成报错-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.9</version>
        </dependency>
    </dependencies>
</project>

3. 通过mybatisplus的代码生成器生成controller,entity,service,mapper等模块代码:

点击查看代码
package com.kye.generator;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Generator {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://IP:端口/数据库库名?server-timezone=Asia?useUnicode=true&characterEncoding=utf8", "账号", "密码")
                // 全局配置
                .globalConfig((scanner, builder) -> builder.author("faith") //作者
                .enableSwagger()// 开启 swagger 模式
                .outputDir("D:\\code\\javaCode\\javaTest\\src\\main\\java"))//生成的包所在目录
                // 包配置
                .packageConfig((scanner, builder) -> builder.parent("com.kye"))
                // 策略配置
                .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all:")))
                        .controllerBuilder().enableRestStyle().enableHyphenStyle()
                        .entityBuilder().enableLombok().addTableFills(
                                new Column("create_time", FieldFill.INSERT)
                        ).build())
                /*
                    模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
                   .templateEngine(new BeetlTemplateEngine())
                   .templateEngine(new FreemarkerTemplateEngine())
                 */
                .execute();
    }
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

4. 配置application.yaml文件

点击查看代码
server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://10.83.132.4:3306/vts_thirdparty?server-timezone=Asia?Shanghai&useUnicode=true&charterEncoding=utf-8
    username: app_admin_vts
    password: AtsB@2020Eky
  mvc:
    path match:
      matching-strategy: ant_path_matcher #swagger3.0配置
mybatis-plus:
  mapper-locations: classpath*:/mapper/*Mapper.xml
  type-aliases-package: com.king.mispronunciation.model
  configuration:
    #驼峰命名规则
    map-underscore-to-camel-case: true
    logImpl: org.apache.ibatis.logging.stdout.StdOutImpl # 使用标准输出流作为日志输出
logging:
  level:
    root: info

5. 通过以上步骤,已经完全生成了controller,entity,service,mapper等模块的代码

5.1.对于mapper模块的代码基本不用修改,因为mapper的接口是直接操作数据库的
5.2. 对于service模块的代码,可以自己写实现逻辑,例:
点击查看代码
package com.kye.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kye.entity.ThirdMbIdRelation;
import com.kye.mapper.ThirdMbIdRelationMapper;
import com.kye.common.Result;
import com.kye.service.IThirdMbIdRelationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author faith
 * @since 2023-11-28
 */
@Service
public class ThirdMbIdRelationServiceImpl extends ServiceImpl<ThirdMbIdRelationMapper, ThirdMbIdRelation> implements IThirdMbIdRelationService {

    @Autowired
    private ThirdMbIdRelationMapper thirdMbIdRelationMapper;

    public Result getMbId(String id) {
        QueryWrapper<ThirdMbIdRelation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("id","demand_order_code","mb_id").eq("id",id);
        List<Map<String, Object>> selectMaps = thirdMbIdRelationMapper.selectMaps(queryWrapper);
        return Result.success(selectMaps);

    }


}
5.3.controller模块的代码配置接口访问的路径,注意方法上一定要有访问的路径
点击查看代码
package com.kye.controller;

import com.kye.common.Result;
import com.kye.entity.ThirdMbIdRelation;
import com.kye.mapper.ThirdMbIdRelationMapper;
import com.kye.service.IThirdMbIdRelationService;
import io.swagger.annotations.Api;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.sql.SQLOutput;
import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author faith
 * @since 2023-11-28
 */
@RestController
@RequestMapping("/third-mb-id-relation")
@Api(tags = "通过订单编码查询货拉拉id") //swagger注解,解释controller功能
public class ThirdMbIdRelationController {

    private final IThirdMbIdRelationService thirdMbIdRelationService;

    public ThirdMbIdRelationController(IThirdMbIdRelationService thirdMbIdRelationService) {
        this.thirdMbIdRelationService = thirdMbIdRelationService;
    }

    @GetMapping("/{id}")
    public Result getInfo(@PathVariable String id){
        Result mbId = thirdMbIdRelationService.getMbId(id);
        System.out.println(mbId);
        return mbId;
    }
}

6. 通过以上步骤,一个完整的接口已经开发完毕,但是通常在开发中需要接口的返回值统一格式,因此编写Result类封装接口统一返回格式

点击查看代码
package com.kye.common;

import lombok.Data;

import java.io.Serializable;

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

    //响应成功,默认msg
    public static Result success(Object data) {
        Result result = new Result();
        result.setCode(200);
        result.setMsg("操作成功");
        result.setData(data);
        return result;
    }
    //响应成功,自定义msg
    public static Result success(String msg,Object data){
        Result result = new Result();
        result.setCode(200);
        result.setMsg(msg);
        result.setData(data);
        return result;
    }
    //响应失败
    public static Result fail(String msg){
        Result result = new Result();
        result.setCode(-1);
        result.setMsg(msg);
        result.setData(null);
        return result;
    }
    //响应失败,传入对象
    public static Result fail(String msg,Object data){
        Result result = new Result();
        result.setCode(-2);
        result.setData(data);
        result.setMsg(msg);
        return result;
    }
}

7.接口开发完毕,调试接口,通过集成swagger3.0统一调试,配置swagger后便可正常,访问swagger:http://localhost:8080/swagger-ui/

点击查看代码
package com.kye.common;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

//1. 配置类
@Configuration
//2. 开启swagger支持
//@EnableSwagger2
@EnableOpenApi//swagger3.0依赖 可以不写
public class SwaggerConfig {
    /**
     * 3、自动创建Docket文档摘要对象
     */
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.OAS_30) // 选择swagger的版本,这里若选的3.0则要用OAS_30
                // 配置文档信息:swagger文档的标题、版本、描述
                .apiInfo(this.apiInfo())
                .select()
                // 配置要生成swagger文档的扫描的目录包
                .apis(RequestHandlerSelectors.basePackage("com.kye"))
                // 对指定路径下的任意类生成文档
                .paths(PathSelectors.any())
                // 创建对象
                .build();
    }
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                // 指定文档标题 (在swagger页面会显示)
                .title("SpringBoot接口文件")
                // 指定文档的版本
                .version("1.0")
                // 文档描述
                .description("API描述").build();
    }
}

原文参考:https://www.cnblogs.com/helex/p/16493421.html

标签:mybatisplus,springboot,mysql,kye,result,org,import,com,Result
From: https://www.cnblogs.com/faith007/p/17872826.html

相关文章

  • MySQL数据库管理系统
    MySQL数据库管理系统一、知识点归纳本章讨论了MySQL关系数据库系统;介绍了MySQL并指出了它的重要性;展示了如何在Linux机器上安装和运行MySQL;演示了如何使用MySQL在命令模式和批处理模式下使用SQL脚本创建和管理数据库;说明了如何将MySQL与C编程相结合;演示了如何将MySQL与PHP......
  • docker 安装mysql 8.0.26
    sudodockerpullmysql:8.0.26创建数据目录和配置文件:在你的宿主机上创建一个目录来存放MySQL的配置文件和数据。你还需要为这个目录设置适当的权限1:sudomkdir-p/data/mysql8.0/conf/data/mysql8.0/data/data/mysql8.0/logssudochmod-R755/data/mysql8.0/conf/data/......
  • 使用JookDB将Oracle数据库迁移到Mysql
    JookDB是多平台的数据库开发管理工具,如Sql输入提示、导入导出、表设计、数据编辑等功能强大,而且是C++开发的界面非常丝滑流畅。可以免费支持Oracle、Mysql、SqlServer数据库管理。要通过JookDB将Oracle数据库迁移到Mysql需要先添加连接到这两个数据库的数据源。选择菜单【文件/新建......
  • Java连接MySQL数据库(maven构建)
    构建方式:Java+MySql+Maven1.创建项目2.导入依赖选择目录中的pom.xml文件,导入mysql连接驱动依赖注意这里版本使用的是MySql8.0,MySql在8.0版本有较大改动<dependencies><dependency><groupId>mysql</groupId><ar......
  • C#连接mysql
    本文章是建立在已经安装MySQL数据库的前提,默认安装在C:\ProgramFiles(x86)\MySQL,建议在安装时选中Connector.NET6.9的安装,里面有MySQL与C#连接的动态链接库。帮助文档C:\ProgramFiles(x86)\MySQL\Connector.NET6.9\Documentation\ConnectorNET.chm是我撰写此文章的主......
  • 快速配置mysql(非docker)
    蠢新从大二开始用起mysql,直到工作了还需要去网上找博客查怎么装。Windows不管,因为我自己的工位电脑已经有了。以下的操作为假设你有一台腾讯云的服务器,或者版本至少在20以上的Ubuntu。root用户登录。使用包管理器安装mysql8.0apt-getupdateapt-getinstallmysql-serversys......
  • MySQL8.0在Ubuntu系统安装
    目录前言一、Mysql是什么?二、安装步骤1.安装操作需root权限:2.更新apt仓库信息3.查询库中mysql版本3.安装mysql4.启动MySQL5.登陆MySQL设置密码6.设置密码7.退出MySQL控制台8.对MySQL进行初始化1.输入密码:2.是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(本......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第十二周学习总结 MySQL数据库系统
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学****知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 【mysql】limit实现分页
    MySQL中使用LIMIT实现分页格式:LIMIT[位置偏移量,]行数第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条......
  • 如何使用mysql实现分布式锁
    如何使用mysql实现可重入的分布式锁目录什么是分布式锁?如何实现分布式锁?定义分布式表结构定义锁统一接口使用mysql来实现分布式锁①生成线程标记ID②加锁③解锁④重置锁写在最后1.什么是分布式锁?百度百科:分布式锁是控制分布式系统之间同步访问共享资源的一......