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及用法