前言
在快速迭代的开发环境中,文档与高效的ORM框架是提升开发效率与质量的关键。本文旨在介绍如何在Spring Boot项目中集成Swagger和MyBatis Plus。Swagger为API提供强大的自动生成文档功能,助力前后端分离开发;而MyBatis Plus则以其简洁的CRUD操作和丰富的功能,极大地简化了数据库操作。两者的结合,将为你的Spring Boot项目带来前所未有的开发体验。
在配置之前请先确保已经创建好SpringBoot基础模板
Swagger_5">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: SwaggerMybatisPlusmvc:pathmatch:matching-strategy: ant_path_matcher
knife4j:enable: true
java_28">3)在启动类Application.java中开启
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);}
}
java_49">4)创建一个testController.java测试
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: SwaggerMybatisPlusmvc:pathmatch:matching-strategy: ant_path_matcherdatasource: #定义数据源#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=trueusername: 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: MYSQLconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段call-setters-on-nulls: false# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3) 在启动类中映射Mapper
java">@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);}
}
java_168">4)创建UserInfo.java对象
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;
}
java_194">5)创建UserInfoMapper.java类
java">@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {}
java_202">6) 创建UserInfoService.java类
java">public interface UserInfoService extends IService<UserInfo> {}
java_209">7) 创建UserInfoServiceImpl.java实现类
java">@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {}
8) 创建testController 测试
java">@RestController
@Api(tags = "test接口")
public class testController {@Autowiredprivate 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 mapperPUBLIC "-//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_userwhere id = #{id}</select>
</mapper>
如果不想写UserInfoMapper.xml文件,也可以直接写UserInfoMapper.java
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
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及用法