springboot知识

5.研究所第五周

一、SpringBoot实现分页查询

  1. 分页的原理

    分页主要是为了减少一次返回的数据量,提高数据传输效率和应用程序性能。它通过将数据分成多个块,使用LIMIT和OFFSET来控制返回的数据范围。在Spring Boot中,可以通过配置和集成持久层框架来实现分页功能,使用模板引擎渲染分页组件。

  2. 分页功能的作用及优点

    1. 减少数据传输量:通过分页,每次只返回用户需要查看的页面数据,大大减少了数据传输量,提高了数据传输效率。
    2. 提高应用程序性能:分页查询可以减少数据库查询次数,减轻数据库负载,从而提高应用程序的性能。
    3. 提高用户体验:分页查询允许用户按页浏览大量数据,使得用户可以更加方便地获取所需信息,提高了用户体验。

    Spring Boot分页查询的优点主要表现在其简单易用、灵活性强、可扩展性高等方面。通过使用Spring Boot提供的分页查询功能,我们可以轻松地实现复杂的分页逻辑,并且可以根据实际需求进行自定义扩展。

  3. 实现分页功能的步骤

    • 导入pom.xml 和有关分页查询的插件

      <dependency><!--导入分页插件-->
                  <groupId>com.github.pagehelper</groupId>
                  <artifactId>pagehelper-spring-boot-starter</artifactId>
                  <version>1.3.0</version>
              </dependency>
      
    • 创建实体类和接口

      public class User {  
          private Long id;  
          private String name;  
          private Integer age;  
          // getters and setters...  
      }
      
      public interface UserMapper {  
          List<User> selectAllUser();  
      }
      
    • 在application.properties中配置PageHelper插件

      # PageHelper配置  
      pagehelper.helperDialect=mysql  
      pagehelper.reasonable=true  
      pagehelper.supportMethodsArguments=true  
      pagehelper.params=count=countSql
      
    • 在Mapper接口中添加分页查询方法

      @Mapper  
      public interface UserMapper {  
          List<User> selectAllUser();  
          List<User> selectAllUser(@Param("offset") int offset, @Param("limit") int limit);  
      }
      
    • 创建一个Service类,并注入userMapper

      @Service  
      public class UserService {  
          @Autowired  
          private UserMapper userMapper;  
          public PageInfo<User> getUserList(int pageNum, int pageSize) {  
              int offset = (pageNum - 1) * pageSize;  
              List<User> userList = userMapper.selectAllUser(offset, pageSize);  
              return new PageInfo<>(userList);  
          }  
      }
      
    • 建一个控制器类,并注入UserService

      @RestController  
      public class UserController {  
          @Autowired  
          private UserService userService;  
          @GetMapping("/user")  
          public PageInfo<User> getUserList(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) {  
              return userService.getUserList(pageNum, pageSize);  
          }  
      }
      

二、SpringBoot集成MybatisPlus整合Swagger

  1. swagger简介

    Swagger是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,可以较好的解决接口文档的交互问题,以一套标准的规范定义接口以及相关的信息,就能做到生成各种格式的接口文档,生成多种语言和客户端和服务端的代码,以及在线接口调试页面等等。只需要更新 Swagger 描述文件,就能自动生成接口文档,做到前端、后端联调接口文档的及时性和便利性。

  2. swagger的优点

    1. 生成API文档:Swagger可以自动生成API文档,使得其他开发者能够快速了解和使用API。
    2. 减少冗余代码:Swagger可以自动生成API接口的注解,减少了冗余代码的编写。
    3. 简化接口调试:Swagger提供的在线测试功能,可以简化接口调试过程。
    4. 提高开发效率:Swagger的代码生成器可以快速生成Model和Controller层的代码,提高了开发效率。
    5. 统一接口规范:Swagger可以定义统一的接口规范,使得前端和后端的开发人员可以更好地协作。
    6. 支持多种语言和框架:Swagger支持多种语言和框架,使得跨语言的开发变得更加容易。
    7. 集成Spring Boot:Swagger与Spring Boot集成良好,可以方便地在Spring Boot项目中集成Swagger。
    8. 强大的验证和测试工具:Swagger提供了强大的验证和测试工具,可以确保API的正确性和稳定性。
    9. 支持自定义注解:Swagger支持自定义注解,使得开发者可以根据自己的需求定义注解。
    10. 易于扩展和定制:Swagger提供了丰富的扩展接口和插件机制,使得开发者可以根据自己的需求进行扩展和定制。
  3. springboot整合swagger步骤

    • 添加pom.xml

      <properties>
              <swagger.version>3.0.0</swagger.version>
          </properties>
      
      	<dependency>
                  <groupId>io.springfox</groupId>
                  <artifactId>springfox-boot-starter</artifactId>
                  <version>${swagger.version}</version>
              </dependency>
      
    • config包下添加Swagger配置类

      package com.cqgcxy.config;
      
      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.oas.annotations.EnableOpenApi;
      import springfox.documentation.service.ApiInfo;
      import springfox.documentation.service.Contact;
      import springfox.documentation.spi.DocumentationType;
      import springfox.documentation.spring.web.plugins.Docket;
      
      // 表明当前类是配置类
      @Configuration
      @EnableOpenApi
      public class SwaggerConfig {
          @Bean
          public Docket createRestApi() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .apiInfo(apiInfo())
                      // 为api选择启动生成器
                      .select()
                      // 指定要生成api文档的根包
                      .apis(RequestHandlerSelectors.basePackage("com.cqgcxy.controller"))
                      // 路径配置
                      .paths(PathSelectors.any())
                      .build();
          }
          /**
           * 创建一个ApiInfo对象
           * @return
           */
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      // 文档标题
                      .title("农牧慧智慧养殖系统接口")
                      // 简介
                      .description("后端框架综合开发技术与应用课程案例")
                      // 作者信息:作者姓名、作者地址、作者邮箱
                      .contact(new Contact("Pep7Chiao", "http://www.baidu.com", "362142370@qq.com"))
                      // 版本号
                      .version("1.0")
                      .build();
          }
      }
      

    4.配置注解添加文档内容

    @Api:用于定义一个RESTful API接口,指定接口的名称、请求路径、请求方法等信息。

    @ApiOperation:用于描述一个接口的操作,指定操作的请求参数、返回值等信息。

    @ApiParam:用于描述一个接口参数的信息,指定参数的名称、类型、是否必需等信息。

    @ApiModel:用于定义一个数据模型,指定模型的名称、属性等信息。

    @ApiModelProperty:用于描述一个模型属性的信息,指定属性的名称、类型、描述等信息。

    @RequestMapping:用于映射HTTP请求到处理方法,指定请求路径、请求方法等信息。

    @RequestParam:用于映射HTTP请求参数到方法的参数,指定参数的名称、类型、是否必需等信息。

    @RequestBody:用于映射HTTP请求体到方法的参数,指定参数的类型、是否必需等信息。

    @PathVariable:用于映射URL路径参数到方法的参数,指定参数的名称、类型、是否必需等信息。

    @RequestHeader:用于映射HTTP请求头到方法的参数,指定参数的名称、类型、是否必需等信息。

三、Thymeleaf模板

  1. Thymeleaf介绍

Thymeleaf是一种基于Java的模板引擎,可用于在Spring Boot应用程序中创建动态网页。它具有易用性、性能优异和高度可定制性等优点,被广泛用于Web应用程序的后端开发。通过使用Thymeleaf,开发人员可以将逻辑代码与页面设计分离,从而简化开发过程并提高代码的可读性和可维护性。

2.优点

  • 易于使用:Thymeleaf提供了简单易用的模板语法,可以方便地与Spring MVC集成,同时支持HTML5和XML规范,使得开发人员可以快速上手并构建出符合规范的Web页面。
  • 高效的性能:Thymeleaf采用了高效的模板引擎实现,可以快速地处理大量的模板文件和数据,适用于大规模的Web应用程序开发。
  • 可扩展性:Thymeleaf提供了丰富的自定义标签和属性,开发人员可以根据需要扩展和定制模板引擎,以满足特定的需求。
  • 良好的兼容性:Thymeleaf与Spring Boot的集成良好,可以与Spring MVC、Spring Data等其他Spring子框架无缝衔接,适用于构建复杂的Web应用程序。
  • 丰富的标签库:Thymeleaf提供了丰富的标签库,包括条件判断、循环控制、变量替换等常用功能,使得开发人员可以更加方便地编写模板文件。
  • 安全性:Thymeleaf默认对模板中的变量进行转义处理,可以有效防止XSS等安全漏洞的攻击,提高了Web应用程序的安全性。

3.步骤

  • 在pom.xml中添加依赖

    <dependencies>  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-thymeleaf</artifactId>  
        </dependency>  
    </dependencies>
    
  • 在application.properties中配置Thymeleaf模板路径

    spring.thymeleaf.prefix=classpath:/templates/
    
  • 创建控制类

    @Controller  
    public class HelloController {  
        @GetMapping("/hello")  
        public String hello(Model model) {  
            model.addAttribute("message", "Hello, Thymeleaf!");  
            return "hello";  
        }  
    }
    
  • 创建一个Thymeleaf模板文件hello.html,用于显示用户请求的数据

    <!DOCTYPE html>  
    <html>  
    <head>  
        <title>Hello, Thymeleaf!</title>  
    </head>  
    <body>  
        <h1 th:text="${message}">Hello World!</h1>  
    </body>  
    </html>
    
  • 运行springboot程序

  • 创建一个Thymeleaf模板文件hello.html,用于显示用户请求的数据

    <!DOCTYPE html>  
    <html>  
    <head>  
        <title>Hello, Thymeleaf!</title>  
    </head>  
    <body>  
        <h1 th:text="${message}">Hello World!</h1>  
    </body>  
    </html>
    
  • 运行springboot程序

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值