1、分页的方法。

如果我们想要在页面上进行分页,我在之前用纯java和js写过,十分的麻烦,那么我们现在有没有一种简单的分页方法呢?答案是有的
官网地址:
https://github.com/pagehelper/pagehelper-spring-boot https://github.com/abel533/MyBatis-Spring-Boot
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md
,这里我们使用别人已经整合好的代码,进行直接调用。

1、添加pageHelper依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>

2、在application.yml添加分页配置信息

pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql

3、在java代码中调用分页

PageHelper.startPage 静态方法调用

//获取第1页,10条内容,默认查询总数count
Page page = PageHelper.startPage(1, 10);//紧跟着的第一个select方法会被分页
List<User> list = userMapper.selectList();
// 获取总记录数:
page.getTotal();
// 当前页:pageNum,每页大小:pageSize
// 获取总页数:
page.getPages();

2、查询的方法。

1、添加commons常用包依赖

<!-- commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

此时我们在实现类中的代码应该是

@Override
    public PageResponseDto<ShoppingStorage> querySelective(String key, String name, Integer page, Integer limit, String sort, String order) {
        ShoppingStorageExample example = new ShoppingStorageExample();
        ShoppingStorageExample.Criteria  criteria = example.createCriteria();

        //模糊查询
        
        //搜索的key不为空,并且不等于空字符串。

        if(key != null && "".equals(key.trim())){//equals(key.trim())这个括号里面的trim()的意思是去除前后空格
            criteria.andKeyEqualTo(key);
        }
        //分页
        Page<ShoppingStorage> mypage = PageHelper.startPage(page,limit);
        List<ShoppingStorage> shoppingStorages = shoppingStorageMapper.selectByExample(example);
        PageResponseDto pageDto = new PageResponseDto(mypage,shoppingStorages);
        return pageDto;
    }

2、在java中调用查询方法。

我们看到,在模糊查询的时候,我们编写的条件过于繁琐,此时可以通过常用类中StringUtils.isNotBlank(Key)来进行简化代码。

if (StringUtils.isNotBlank(key)) { // isNotEmpty()
//		criteria.andKeyTo(key.trim());精确查询
        criteria.andKeyLike("%" + key.trim() + "%");//模糊查询,需要加百分号
        }
    
        //搜索的key不为空,并且不等于空字符串。
    /*if (key != null && "".equals(key.trim())) {//equals(key.trim())这个括号里面的trim()的意思是去除前后空格
        criteria.andKeyEqualTo(key.trim());
    }*/

3、排序

1、在java中调用排序方法

在我们使用IDEA生成的Example文件中,如果你数据库中有排序的字段,那么他就会生成orderByClause,排序字段。

// 排序功能
        example.setOrderByClause(sort + " " + order);
        
//sort排序字段,order顺序

4、Spring整合Swagger

现在的项目都是前后端分离的,那么前后端分离之后,接口是否能够正确对接上呢,如果前后端的接口需要进行动态调整,又该如何修改呢,此时Swagger就可以减轻我们的工作量,

1、加入依赖

<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

2、Swagger2 配置

Swagger2的配置也是比较容易的,在项目创建成功之后,只需要开发者自己提供一个Docket 的Bean即可,代码如下:

package com.neu.shopping.common.Swagger;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)//创建一个文档,
                //映射路径 / 根路径下开始映射
                .pathMapping("/")
                //选择API
                .select()
                //映射的控制器
                .apis(RequestHandlerSelectors.basePackage("com.neu.shopping.controller"))
                .paths(PathSelectors.any())
                //创建API信息
                .build().apiInfo(new ApiInfoBuilder()
                        .title("商城后端项目-v1.0的Swagger接口文档")//标题
                        .description("SpringBoot v2.5.6整合Swagger......")//描述
                        .version("1.0")//环境
                        .contact(new Contact("HHHHH", "www.baidu.com", "hujian088@gmail.com"))//联系人
                        .license(" ")
                        .licenseUrl(" ")
                        .build());
    }

此时我们在11月17日的对象储存MobileStorageController中添加一行@Api(“对象存储相关接口”)注解

@RestController
@RequestMapping("/mobile/storage")
@Api("对象存储相关接口")
public class MobileStorageController {

之后访问http://localhost:8888/swagger-ui.html,就可看到

springblade 分页最多只能500条 spring实现分页和排序_java


这里的就是我们刚刚代码中配置的信息,和我们之前项目写的控制器代码。

我们现在就可通过这个网页来进行接口的调试,看这个接口需要什么参数。

如果加上@ApiIgnore注解,就是不让你看这个接口。

@ApiIgnore 注解主要作用在方法上,类上,参数上。
当作用在方法上时,方法将被忽略;作用在类上时,整个类都会被忽略;作用在参数上时,单个具体的参数会被忽略。

// 真个类被 Swagger 忽略
@ApiIgnore
@RestController
@RequestMapping(value = "/222")
public class XController {

}
 
@RestController
@RequestMapping(value = "/222")
public class XController {
 
  // 整个方法被忽略
  @ApiIgnore
  public String hello(){
    return "hello";
  }
 
  // Swagger 上 忽略 User 参数
  public String sayHello(@ApiIgnore User user){
    return "hello " + user.getName();
  }
}