目录

 1.springboot整合swagger接口文档

1.1什么是swagger2

1.2 为什么需要使用swagger2的api文档

1.3如何使用swagger2

2.springboot整合mybatis-plus

2.1 mp的简介

2.2 如何使用 


 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

http://ip:port/doc.html

2.springboot整合mybatis-plus

2.1 mp的简介

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

插件主体 | MyBatis-Plus (baomidou.com)

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

  • 损耗小:启动即会自动注入基本 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());
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐