Springboot整合Swagger+mybatis-plus
目录
1.springboot整合swagger接口文档
1.1什么是swagger2
它就是可以api接口,它可以对你书写的接口进行说明。并以文档的形式存在。 、
1.2 为什么需要使用swagger2的api文档

1.3如何使用swagger2
(1)引用swagger的依赖
<!--引入swagger2依赖-->
<dependency>
<groupId>io.github.jianzhichun</groupId>
<artifactId>spring-boot-starter-swagger2</artifactId>
<version>0.0.1</version>
</dependency>
<!--图形化依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
(2)配置swagger的信息
@Configuration //表示类似于配置文件
public class SwaggerConfig {
@Bean //加在方法上,表示把方法的返回结果交于spring容器来管理对象,docket里面封装了接口文档的信息
public Docket docket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName("qy168")
.apiInfo(getInfo())
.select()
//只为com.aaa.controller包下的类生成接口文档
.apis(RequestHandlerSelectors.basePackage("com.aaa.controller"))
.build();
return docket;
}
private ApiInfo getInfo(){
Contact DEFAULT_CONTACT = new Contact("于清晨","http://www/baidu.com","111@qq.com");
ApiInfo apiInfo=new ApiInfo("QY168班级","学生管理系统API文档","1.0","http://localhost:8081/doc.html",
DEFAULT_CONTACT,"11网络科技有限公司","about:blank");
return apiInfo;
}
}

(3)使用swagger的注解
@Api:接口类的说明 加在controller类上
@ApiOperation: 接口方法的说明。 加在controller方法上
@ApiImplicitParams: 接口方法的所有参数的说明.
@ApiImplicitParam:单个参数的说明
--name: 参数名
--value: 参数的说明
--require: 是否为必须的
--dataType: 参数类型说明 int string
@ApiModel: 实体类的说明
@ApiModelProperty: 单个参数的说明
(4)启动工程并访问swagger接口文档的路径
http://ip:port/swagger-ui.html


2.springboot整合mybatis-plus
2.1 mp的简介
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现==单表大部分 CRUD 操作==,更有强大的==条件构造器==,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询.
分页插件支持多种数据库:支持 MySQL[阿里巴巴]、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
2.2 如何使用
(1)引入相关依赖
<dependencies>
<!--引入swagger2依赖-->
<dependency>
<groupId>io.github.jianzhichun</groupId>
<artifactId>spring-boot-starter-swagger2</artifactId>
<version>0.0.1</version>
</dependency>
<!--图形化依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<!--引入mybatis-plus的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>2.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
(2)修改application.properties配置文件
#修改端口号
server.port=8081
#数据源信息
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=10
#mybatis映射文件的路径
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
#sql日志--控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
(3)实体类
@Data
@ApiModel(value = "学生实体类")
@NoArgsConstructor
@AllArgsConstructor
public class Student {
/**
* AUTO(0),递增 按照数据库表的主键递增模式
* NONE(1),人为输入id值
* INPUT(2),人为输入id值
* ASSIGN_ID(3),默认的算法。雪花算法
* ASSIGN_UUID(4),按照UUID生成---字符串
*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "手机号")
private String phone;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "专业")
private String profession;
@ApiModelProperty(value = "年龄")
private Integer age;
@ApiModelProperty(value = "性别")
private Integer gender;
@ApiModelProperty(value = "状态")
private Integer status;
@ApiModelProperty(value = "创建时间")
private Date createtime;
}
(4)dao层
public interface StudentDao extends BaseMapper<Student> {
}
(5)测试
@SpringBootTest
class Qy168SpringBoot05ApplicationTests {
@Autowired
private StudentDao studentDao;
@Test
/**
* 根据id查询学生信息
* 表名和实体类名不一致,使用TableName(Value="表名")
* 列名和实体类属性名不一致: 使用@TableField(value="列名")
* 键和实体的不一致或者不叫id 使用@TableId(value="主键列")
* 如果实体类中出现某个属性 不属于表里面的字段。 @TableField(exist = false) //表示数据库不存在该列
*/
void testSelectById() {
//默认主键名叫id--需要在该属性上标记它为主键。
Student student = studentDao.selectById(2);
System.out.println(student);
}
/**
* 添加学生信息
* 添加时完成主键生成策略,默认雪花算法ASSIGN_ID(3)
* AUTO(0),递增 按照数据库表的主键递增模式
* NONE(1),人为输入id值
* INPUT(2),人为输入id值
* ASSIGN_ID(3),默认的算法。雪花算法
* ASSIGN_UUID(4),按照UUID生成---字符串
*/
@Test
void testInsert(){
Student student = new Student(null, "zkl", "17799990023", "13111@qq.com", "数学", 25, 1, 2, new Date(2006,05,12));
System.out.println("添加前"+student);
int insert = studentDao.insert(student);
System.out.println("添加后"+student);
}
/**
* 修改学生信息
*/
@Test
void testUpdate(){
//根据主键修改
Student student = new Student(24, "tjc", "13212312312", "13111@qq.com", "数学", 25, 1, 2, new Date(2006,05,12));
// studentDao.updateById(student);
//mybatis-plus封装了一个条件类 每个条件对应一个方法:Wrapper---UpdateWrapper[增删改的条件] QueryWrapper[查询的条件]
UpdateWrapper<Student> updateWrapper = new UpdateWrapper<>();
//where name = "后裔"
//updateWrapper.eq("name","tjc");
//where age>=54 (ge:>= gt:> le:<= lt:< ne:!=)
//updateWrapper.ge("age",54);
//where age between 15 and 20
//updateWrapper.between("age",15,20);
//where name like %z%
updateWrapper.like("name","z");
studentDao.update(student,updateWrapper);
}
/**
* 删除学生信息
*/
@Test
void TestDelete(){
//根据主键删除
//studentDao.deleteById(24);
//批量删除
// ArrayList<Integer> ids = new ArrayList<>();
// ids.add(23);
// ids.add(30);
// ids.add(32);
// studentDao.deleteBatchIds(ids);
//根据其他条件删除
UpdateWrapper<Student> updateWrapper = new UpdateWrapper<>();
UpdateWrapper<Student> updateWrapper1 = updateWrapper.likeRight("name", "z");
studentDao.delete(updateWrapper1);
}
/**
* 根据条件查询多条记录
*/
@Test
void testSelectAllCondition(){
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("profession","工程");
List<Student> students = studentDao.selectList(queryWrapper);
System.out.println(students);
}
/**
* 分页查询. 如果想让分页有效 必须配置分页拦截器
*/
@Test
void testSelectByPage(){
Page<Student> page = new Page<>(1, 3);
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
//Asd顺序 Desc倒序
queryWrapper.orderByAsc("id");
Page<Student> studentPage = studentDao.selectPage(page, queryWrapper);
System.out.println("总条数"+studentPage.getTotal());
System.out.println("总页数"+studentPage.getPages());
System.out.println("当前页的记录"+studentPage.getRecords());
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)