当前位置: 首页 > article >正文

SpringBoot配置Swagger和MybatisPlus

SpringBoot配置Swagger和MybatisPlus

  • 前言
  • 1. 配置Swagger
    • 1)导入依赖
    • 2)修改配置文件application.yml
    • 3)在启动类Application.java中开启
    • 4)创建一个testController.java测试
    • 5)启动项目测试
  • 2. 配置MybatisPlus
    • 1)引入依赖
    • 2)修改配置文件application.yml
    • 3) 在启动类中映射Mapper
    • 4)创建UserInfo.java对象
    • 5)创建UserInfoMapper.java类
    • 6) 创建UserInfoService.java类
    • 7) 创建UserInfoServiceImpl.java实现类
    • 8) 创建testController 测试
    • 9) 启动项目测试
    • 10) Mybatis的基础用法
    • 11) MybatisPlus的用法
  • 参考博客

前言

在快速迭代的开发环境中,文档与高效的ORM框架是提升开发效率与质量的关键。本文旨在介绍如何在Spring Boot项目中集成Swagger和MyBatis Plus。Swagger为API提供强大的自动生成文档功能,助力前后端分离开发;而MyBatis Plus则以其简洁的CRUD操作和丰富的功能,极大地简化了数据库操作。两者的结合,将为你的Spring Boot项目带来前所未有的开发体验。

在配置之前请先确保已经创建好SpringBoot基础模板

1. 配置Swagger

1)导入依赖

<!--swagger-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

2)修改配置文件application.yml

spring:
  application:
    name: SwaggerMybatisPlus
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
knife4j:
  enable: true

3)在启动类Application.java中开启

package com.demo.swaggermybatisplus;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@EnableSwagger2
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4)创建一个testController.java测试

package com.demo.swaggermybatisplus.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName testController
 * @Description
 * @Author Chen
 * @Date 2024/12/19 22:16
 * @Version 1.0
 **/
@RestController
@Api(tags = "test接口")
public class testController {

    @GetMapping
    @ApiOperation("test-get")
    public long test(Integer id) {
        long l = System.currentTimeMillis();
        return l + id;
    }
}

5)启动项目测试

启动项目后访问http://localhost:8080/doc.html#/home
ui界面如下
在这里插入图片描述
选择设置的接口,填写参数,点击发送即可看到响应结果
在这里插入图片描述
上面已经实现了接口文档访问,接下来再配置MybastisPlus

2. 配置MybatisPlus

1)引入依赖

配置mybatis自然得配置mysql测试

<!--mybatis-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.21</version>
</dependency>
<!-- druid依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2)修改配置文件application.yml

spring:
  application:
    name: SwaggerMybatisPlus
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  datasource: #定义数据源
    #127.0.0.1为本机测试的ip,3306是mysql的端口号。serverTimezone是定义时区,照抄就好,mysql高版本需要定义这些东西
    #useSSL也是某些高版本mysql需要问有没有用SSL连接
    url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/chatai?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    username: root  #数据库用户名,root为管理员
    password: root  #该数据库用户的密码
    type: com.alibaba.druid.pool.DruidDataSource  # 使用druid数据源
mybatis:
  config-location: classpath:mybatis.cfg.xml    #  mybatis主配置文件所在路径
  type-aliases-package: com.demo.drools.entity  #  定义所有操作类的别名所在包
  mapper-locations:                                     #  所有的mapper映射文件
    - classpath:mapper/*.xml

# mybatis-plus相关配置
mybatis-plus:
  # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  # 以下配置均有默认值,可以不设置
  global-config:
    db-config:
      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: auto
      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
      field-strategy: IGNORED
      #数据库类型
      db-type: MYSQL
  configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: false
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3) 在启动类中映射Mapper

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@EnableSwagger2
@MapperScan(basePackages = "com.demo.swaggermybatisplus.mapper")
public class SwaggerMybatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SwaggerMybatisPlusApplication.class, args);
    }
}

4)创建UserInfo.java对象

@Data
@TableName("wechat_user")
public class UserInfo {
    /**
     * 主键
     * @TableId中可以决定主键的类型,不写会采取默认值,默认值可以在yml中配置
     * AUTO: 数据库ID自增
     * INPUT: 用户输入ID
     * ID_WORKER: 全局唯一ID,Long类型的主键
     * ID_WORKER_STR: 字符串全局唯一ID
     * UUID: 全局唯一ID,UUID类型的主键
     * NONE: 该类型为未设置主键类型
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String openid;
    private String nickname;
    private String avatar;
    private String email;
    private String createTime;
    private String updateTime;
}

5)创建UserInfoMapper.java类

@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {

}

6) 创建UserInfoService.java类

public interface UserInfoService extends IService<UserInfo> {

}

7) 创建UserInfoServiceImpl.java实现类

@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {

}

8) 创建testController 测试

@RestController
@Api(tags = "test接口")
public class testController {

    @Autowired
    private UserInfoService userInfoService;

    @GetMapping("list")
    @ApiOperation("获取所以用户")
    public Result<List<UserInfo>> list() {
        List<UserInfo> list = userInfoService.list();
        return Result.success(list);
    }
}

9) 启动项目测试

在这里插入图片描述

10) Mybatis的基础用法

要想实现自定义的查询,可以在resource下创建mapper目录,再创建UserInfoMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.swaggermybatisplus.mapper.UserInfoMapper">

    <select id="getUserInfo" resultType="com.demo.swaggermybatisplus.entity.UserInfo">
        select * from wechat_user
        where id = #{id}
    </select>
</mapper>

如果不想写UserInfoMapper.xml文件,也可以直接写UserInfoMapper.java

@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {
	// 下面 @Select("select * from wechat_ai where id = #{id}")
	// 等价于写在UserInfoMapper.xml中的select
	@Select("select * from wechat_ai where id = #{id}")
    UserInfo getUserInfo(Integer id);
}

11) MybatisPlus的用法

testController.java

	@GetMapping("/plus")
    @ApiOperation("获取单个用户")
    public Result<List<UserInfo>> userInfo(Integer id) {
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(UserInfo::getId, 1);
        List<UserInfo> list = userInfoService.list(queryWrapper);
        return Result.success(list);
    }

以上这三中都可以查询MySQL数据,可以选择合适的使用

参考博客

  • SpringBoot整合Mybatis-plus及用法

http://www.kler.cn/a/447734.html

相关文章:

  • powershell美化
  • 时间管理系统|Java|SSM|JSP|
  • 智能座舱进阶-应用框架层-Handler分析
  • 禅说:zookeeper与聚落。
  • 2.4 libpcap和dpdk的区别
  • sql server索引优化语句
  • memcached 与 redis 的区别?
  • 集成方案 | Docusign + 金蝶云,实现合同签署流程自动化!
  • Ubuntu22.04配置3D gaussian splatting
  • 概率论基础
  • postmam 请求报 Bad Request This combination of host and port requires TLS.解决办法
  • vue应用移动端访问缓慢问题
  • 前端如何将pdf等文件传入后端
  • CCF-GESP 等级考试 2023年6月认证C++四级真题解析
  • 目标检测文献阅读-Faster R-CNN:通过区域建议网络实现实时目标检测(12.16-12.22)
  • 【Rust 学习笔记】Rust 基础数据类型介绍——字符和字符串类型
  • 设计模式-创建型模式-简单工厂模式详解
  • Oracle中间件 SOA之 OSB 12C服务器环境搭建
  • 《开启微服务之旅:Spring Boot 从入门到实践》(三)
  • HTTP协议及安全防范
  • Unity 开发Apple Vision Pro物体识别追踪ObjectTracking
  • Numpy基本操作
  • OnlineMusic项目测试报告
  • 【Leetcode 每日一题】1387. 将整数按权重排序
  • 2024年12月CCF-GESP编程能力等级认证C++编程八级真题解析
  • Jenkins持续集成部署——jenkins安装