首页 > 其他分享 >SpringBoot整合swagger+MP+PageHelper

SpringBoot整合swagger+MP+PageHelper

时间:2023-08-21 11:23:33浏览次数:49  
标签:SpringBoot value PageHelper private Result student id swagger public

1.SpringBoot整swagger接口文档

【接口文档的作用: 就是为了方便前后端的交互】

1.1swagger依赖

   <!--引入swagger2依赖-->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>
        <!--图形化依赖-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>

1.2配置swagger

新建config包并创建SwaggerConfig配置类

@Configuration
public class DocConfig {

    @Bean
    public Docket docket(){
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.aaa.controller"))
                .build();
        return docket;
    }

    private ApiInfo getInfo(){
        Contact DEFAULT_CONTACT = new Contact("百晓生", "http://www.wjy.com", "[email protected]");
        ApiInfo info = new ApiInfo("AAA", "地府管理系统", "v1.0", "http://www.jd.com",
        DEFAULT_CONTACT, "Apache 2.0", "http://www.baidu.com", new ArrayList<VendorExtension>());
        return info;
    }


}

1.3开启swagger2注解驱动

在主启动类上增加注解@EnableSwagger2

1.4测试运行

右键运行

打开浏览器输入http://localhost:8080/doc.html

网址即可进入Swagger文档页面

你们进去的页面与看到我的页面肯定不一样

因为参数的说明我都已经设置过

下面告诉你们参数的说明怎么设置

1.5swagger注解说明

@Api:接口类的说明 加在controller类上     【@Api(tages = "")】

@ApiOperation: 接口方法的说明。 加在controller方法上   (value = "")

@ApiImplicitParams: 接口方法的所有参数的说明.  (value = { 

@ApiImplicitParam(name = "",value = "",require = "",dataType = "",)

})

@ApiImplicitParam:单个参数的说明 

--name: 参数名

--value: 参数的说明

--require: 是否为必须的

--dataType: 参数类型说明 int string

 

@ApiModel: 实体类的说明 

@ApiModelProperty: 单个参数的说明

1.6 注解参数演示:

1.6.1 controller层接口说明

@RestController
@Api(tags = "学生管理")
public class StudentController {
    @Autowired
    private StudentService service;

    //    添加
    @ApiOperation(value = "对象添加学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "student", value = "学生对象", required = true, dataType = "Object")})
    @PostMapping("/insert")
    public Result insert(@RequestBody student student) {
        return service.insert(student);
    }

    //    删除
    @ApiOperation(value = "根据id删除学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "id", value = "学生编号", required = true, dataType = "int")})
    @DeleteMapping("/del")
    public Result del(Integer id) {
        return service.del(id);
    }

    //修改
    @ApiOperation(value = "更改学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "student", value = "学生对象", required = true, dataType = "Object")})
    @PostMapping("/update")
    public Result update(@RequestBody student student) {
        return service.update(student);
    }

    //查询
    @ApiOperation(value = "根据id查询学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "id", value = "学生编号", required = true, dataType = "int")})
    @GetMapping("/sele")
    public Result sele(Integer id) {
        return service.sele(id);
    }

    //分页查询
    @ApiOperation(value = "查询学生全部信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "page", value = "分页当前页数", required = true, dataType = "int"),
            @ApiImplicitParam(name = "size", value = "分页当前条数", required = true, dataType = "int")})
    @GetMapping("/seleall")
    public Result seleAll(Integer page, Integer size) {
        return service.seleAll(page, size);
    }
}

 1.6.2 实体类参数说明:

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("学生实体类")
public class student {
    @ApiModelProperty(value = "学生编号")
    private int id;
    @ApiModelProperty(value = "学生姓名")
    private String name;
    @ApiModelProperty(value = "学生手机号")
    private String phone;
    @ApiModelProperty(value = "学生邮箱")
    private String email;
    @ApiModelProperty(value = "学生专业")
    private String profession;
    @ApiModelProperty(value = "学生年龄")
    private int age;
    @ApiModelProperty(value = "学生性别")
    private int gender;
    @ApiModelProperty(value = "学生状态")
    private int status;
    @ApiModelProperty(value = "操作时间")
    private Date createtime;

}

1.6.3 返回值参数说明:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "统一返回类型对象")
public class Result {
    @ApiModelProperty(value = "状态码")
    private int code;
    @ApiModelProperty(value = "状态信息")
    private String msg;
    @ApiModelProperty(value = "返回数据")
    private Object data;
}

测试运行:

2.springboot整合MP+PageHelper

【mp: mybatis-plus】

2.1 依赖准备

MP依赖:

<!--mp的依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

PageHelper依赖:

<!--pageHelper的依赖-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.5</version>
</dependency>

2.2 配置分页插件拦截器

在已有的config包中创建PageConfig类

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

【注:】

 

2.3 利用MP写CRUD

2.3.0 返回类型实体类:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "统一返回类型对象")
public class Result {
    @ApiModelProperty(value = "状态码")
    private int code;
    @ApiModelProperty(value = "状态信息")
    private String msg;
    @ApiModelProperty(value = "返回数据")
    private Object data;
}

2.3.1 实体类:

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("学生实体类")
public class student {
    @ApiModelProperty(value = "学生编号")
    private int id;
    @ApiModelProperty(value = "学生姓名")
    private String name;
    @ApiModelProperty(value = "学生手机号")
    private String phone;
    @ApiModelProperty(value = "学生邮箱")
    private String email;
    @ApiModelProperty(value = "学生专业")
    private String profession;
    @ApiModelProperty(value = "学生年龄")
    private int age;
    @ApiModelProperty(value = "学生性别")
    private int gender;
    @ApiModelProperty(value = "学生状态")
    private int status;
    @ApiModelProperty(value = "操作时间")
    private Date createtime;

}

2.3.2 dao层

public interface StudentDao extends BaseMapper<student> {
}

【注:这里只需要继承BaseMapper<实体类对象>父类就行了】

2.3.3 service层

2.3.3.1 service接口:

public interface StudentService {
    //添加
    Result insert(student student);
    //删除
    Result del(int id);
    //更改
    Result update(student student);
    //查询
    Result sele(int id);
    //分页查询
    Result seleAll(Integer page,Integer size);
}

2.3.3.2 service实现类:

@Service
public class StudentServiceim implements StudentService {
    @Autowired
    private StudentDao studentDao;

    //添加
    @Override
    public Result insert(student student) {
        int insert = studentDao.insert(student);
        return insert == 1 ? new Result(200,"添加成功",insert): new Result(500,"添加失败",null);
    }
    //删除
    @Override
    public Result del(int id) {
        int i = studentDao.deleteById(id);
        return i == 1 ? new Result(200,"删除成功",null): new Result(500,"删除失败",null);
    }
    //更改
    @Override
    public Result update(student student) {
        int update = studentDao.updateById(student);
        return update == 1 ? new Result(200,"修改成功",null): new Result(500,"修改失败",null);
    }
    //查询
    @Override
    public Result sele(int id) {
        student studentDao1 = studentDao.selectById(id);
        return studentDao1 != null ? new Result(200,"查询成功",studentDao1): new Result(500,"查询失败",null);
    }
    //分页查询
    @Override
    public Result seleAll(Integer page,Integer size) {
        IPage<student> ipage = new Page<>(page,size);
        IPage<student> studentIPage = studentDao.selectPage(ipage, null);
        return studentIPage != null ? new Result(200,"查询成功",studentIPage): new Result(500,"查询失败",null);
    }
}

2.3.4 controller层

@RestController
@Api(tags = "学生管理")
public class StudentController {
    @Autowired
    private StudentService service;

    //    添加
    @ApiOperation(value = "对象添加学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "student", value = "学生对象", required = true, dataType = "Object")})
    @PostMapping("/insert")
    public Result insert(@RequestBody student student) {
        return service.insert(student);
    }

    //    删除
    @ApiOperation(value = "根据id删除学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "id", value = "学生编号", required = true, dataType = "int")})
    @DeleteMapping("/del")
    public Result del(Integer id) {
        return service.del(id);
    }

    //修改
    @ApiOperation(value = "更改学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "student", value = "学生对象", required = true, dataType = "Object")})
    @PostMapping("/update")
    public Result update(@RequestBody student student) {
        return service.update(student);
    }

    //查询
    @ApiOperation(value = "根据id查询学生信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "id", value = "学生编号", required = true, dataType = "int")})
    @GetMapping("/sele")
    public Result sele(Integer id) {
        return service.sele(id);
    }

    //分页查询
    @ApiOperation(value = "查询学生全部信息")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "page", value = "分页当前页数", required = true, dataType = "int"),
            @ApiImplicitParam(name = "size", value = "分页当前条数", required = true, dataType = "int")})
    @GetMapping("/seleall")
    public Result seleAll(Integer page, Integer size) {
        return service.seleAll(page, size);
    }
}

3.MP方法说明

//查询全部
        studentDao.selectList(null);

        //根据id查询
       studentDao.selectById(24);

        //条件查询
        QueryWrapper<student> studentQueryWrapper = new QueryWrapper<>();

        //根据列名条件查询
        studentQueryWrapper.eq("name","妲己");

        //根据范围条件查询(大于某个值)
        studentQueryWrapper.ge("age",40);

        //根据范围条件查询(小于某个值)
        studentQueryWrapper.lt("age",20);

        //模糊查询
       studentQueryWrapper.like("name","白");

        //范围条件查询--不包括某值
        studentQueryWrapper.ne("gender",1);

        //根据某列降序排序
       studentQueryWrapper.orderByDesc("id");

        //多条件查询
        studentQueryWrapper.like("name","花");
        studentQueryWrapper.ge("age",20);
        studentDao.selectList(studentQueryWrapper);
//批量删除
        //根据主键删除
        studentDao.deleteById(24);
        //根据id批量删除
        ArrayList<Integer> students = new ArrayList<>();
        students.add(1);
        students.add(2);
        students.add(3);
        studentDao.deleteBatchIds(students);
//分页与条件混合
IPage<student> iPage = new Page<>(1,5);
QueryWrapper<student> studentQueryWrapper = new QueryWrapper<>();
studentQueryWrapper.eq("gender",1);
studentDao.selectPage(iPage,studentQueryWrapper);

 

以上便是SpringBoot整合swagger+MP+PageHelper中的内容,如有漏缺请在下方留言告知,我会及时补充

标签:SpringBoot,value,PageHelper,private,Result,student,id,swagger,public
From: https://www.cnblogs.com/9--1/p/17645189.html

相关文章

  • 基于SpringBoot的在线文档管理系统的设计与实现
    研究目的及意义随着信息技术的发展,为了提高文档管理效率,而开发了本基于SpringBoot的在线文档管理系统,本在线文档管理系统的开发具有很大的现实意义和实用意义。首先,在操作流程上,管理员和用户都只需要访问网页,便可进行文档信息的管理。不需要像手工记录,快速便捷,提高了文档管理的准......
  • 基于springboot网上点餐系统
    系统管理也都将通过计算机进行整体智能化操作,对于网上点餐系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、美食店管理、美食分类管理、美食信息管理、美食订单管理、美食评价管理、系统管理,用户;首页、个人中心、美食订单管理、美食评价管理、我的收藏......
  • Swagger整合
    1.Swagger作用:生成接口说明文档;对接口进行测试。2.整合2.1 在api子工程添加依赖(Swagger2\SwaggerUI)<!--https://mvnrepository.com/artifact/io.springfox/springfox-swagger2--><dependency><groupId>io.springfox</groupId>......
  • 基于springboot的房屋租赁系统
    房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于SpringBoot的房屋租赁系统。本文重点阐述了房屋租赁系统的开发过程,以实际运用为开发背景,基于SpringBoot框架,运用了Java技术和MYSQ......
  • 基于springboot的网上购物商城系统研发
    系统功能分析本基于SpringBoot的网上购物商城系统主要满足三种用户的需求,这三种用户分别为管理员、商家和用户,下面将对这三种用户分别实现的功能进行详细的阐述。(1)用户:用户在系统前台可查看系统信息,包括首页、商品信息等,注册登录后主要功能模块包括购物车、个人中心、我的地址、我......
  • 基于springboot甘肃非物质文化网站的设计与开发
    系统功能结构设计在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。管理员主要负责填充图书和其类别信息,并对已填充的数据进行维护,包括修改与删除,管理员也需要审核老师注册信息,发布公告信息,管理自助租房信息等。用户信息管理此页面提供给管理员的功能有:用户信息的查询管......
  • SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据
    微信公众号访问地址:SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据一、背景:    利用ThreadPoolTaskExecutor多线程异步批量插入,提高百万级数据插入效率。ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理。ThreadPoolTaskExecutor是ThreadPoolExecut......
  • SpringBoot 测试实践 - 1:常用的工具
    我自己接触到的一些商业或是开源的基于SpringBoot项目,它们大部分是没有测试代码的,test文件夹只有脚手架初始化生成的那个测试类,跟不同的开发聊到这个话题,发现他们中的大部分没有写测试的习惯,或者是觉得写测试代码麻烦,主要还是依赖测试工程师做黑盒的测试。只做黑盒测试的话有一......
  • SpringBoot - 登录
    目录会话技术登录流程:会话技术会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一起会话中包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据会话跟踪方......
  • Springboot内嵌neo4j配置
    环境说明MacOSAppleM1|Jdk17|Maven3.8.5|SpringBoot2.6.9|neo4j5.10.0注:neo4j内嵌最大的坑就是版本兼容性,所以引入前一定检查neo4j与springboot版本兼容性,其次neo4j各版本间配置使用上,区别也挺大的,本文只针对特定版本,因此建议更多参考官网文档,有最新的配置......