【Spring Boot】入门练习

教程

学习目标

  • 多环境配置文件、日志配置
  • 数据校验
  • 异常处理
  • 过滤器和拦截器
  • 响应结果封装
  • 格式化转换器

学习阶段(二)

  • 整合mybatis实现增删查改
  • 分页查询插件pagehelper
  • 整合shiro

shiro介绍(一)
SpringBoot2.0集成Shiro

springboot整合shiro

springBoot整合shiro
Spring Boot整合Shiro

spring boot + mybatis + layui + shiro后台权限管理系统

pom依赖

    <dependencies>
        <!--        web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!--        热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--        lombok 自动生成Getter&Setter、toString()、构造函数 尽量不使用lombok
        还要Idea安装lombok插件
        -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 分页查询插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.0</version>
        </dependency>
        
        <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>

yml配置

server:
  port: 8888
spring:
  #数据库连接,注意修改数据库名和密码
  datasource:
    url: jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  #热部署
  devtools:
    restart:
      #热部署生效
      enable: true
      #设置重启的目录
      additional-paths: src/main/java
  freemarker:
    #页面不加载缓存,修改即时生效
    cache: false
mybatis:
  # mybatis的 Mapping.xml的位置
  mapper-locations: classpath:mapping/*Mapping.xml
  # 指定POJO扫描包来让mybatis自动扫描到自定义的POJO,如果配置了该配置则不需要再ResultMap中指定全类名了
  type-aliases-package: com.su.springboot.entity
  configuration:
    #一开始我的数据库的表属性是teacher_id,address_id
    #在Student类中定义的属性是teacherId,addressId结果就查询不出来
    #所以通过以下方式将其改为驼峰式名下划线去掉,后面的一个字母变为大写
    map-underscore-to-camel-case: true
    #打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


logging:
  #日志打印等级,注意修改对应项目下的包路径
  level:
    com:
      su:
        springboot: DEBUG
  pattern:
    #控制台只输出日期和内容
    console: "%d - %msg%n"
  file:
    #设置日志文件路径及名称
    name: e:\日志\test.log


######### 分页插件 ##########
pagehelper:
  #配置使用哪种数据库语言,不配置的话pageHelper也会自动检测
  helper-dialect: mysql

  #为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值;
  # 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值,
  # 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
  params: count = countSql

  #配置分页参数合理化功能,默认是false。 #启用合理化时,如果pageNum<1会查询第一页,如果pageNum>总页数会查询最后一页;
  #禁用合理化时,如果pageNum<1或pageNum>总页数会返回空数据。
  reasonable: true

  #支持通过Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
  support-methods-arguments: true


在这里插入图片描述
在这里插入图片描述

package com.su.springboot02.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    //接口:http://localhost:8081/hello
    @RequestMapping("/hello")


    public String hello(){
        //调用业务,接收前端参数
        return "hello";
    }
}


在这里插入图片描述
ASCII文字,Spring Boot自定义启动Banner在线生成工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.su.springboot03.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {

    @RequestMapping("/abc")
    public String test(){
        return "demo";
    }
}

Bootstrap

整合Swagger文档

教程

SpringBoot中的使用swagger2接口规范

springboot集成swagger2

增删查改

第一步:jar包的引入:

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

第二步:swagger的配置启动类编写:

package com.su.springboot03.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.service.ApiInfo;
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 CreatRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                // 为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.su.springboot03.controller")).paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 页面标题
                .title("SpringBoot中的使用swagger2接口规范")
                // 版本号
                .version("1.0.0")
                // 描述
                .description("接口说明")
                .build();
    }
}



package com.su.springboot03.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/* 类注解 */
@Api(value = "desc of class")
@RestController
public class HelloController {

    /* 方法注解 */
    @ApiOperation(value = "desc of method", notes = "")
    @GetMapping(value="/hello")
    public Object hello( /* 参数注解 */ @ApiParam(value = "desc of param" , required=true ) @RequestParam String name) {
        return "Hello " + name + "!";
    }
}

在这里插入图片描述
F5清除页面缓冲

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

练习

在这里插入图片描述

package com.su.springboot03.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController

public class TestController {

    @RequestMapping("\test")
    public String fun(){
        return "做一个小测试";
    }

}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

package com.su.springboot03.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@Api(value="用户接口",tags="万相之王",description = "测试接口")
@RequestMapping(value="/home")
public class TestController {
    private Map<String,String> map = new HashMap<>();
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ApiOperation(value = "增加一个角色", notes = "好像爱这个世界")
    public Map<String,String> Add(@RequestParam String role,@RequestParam String name) {

        map.put(role,name);
        return map;
    }

    @RequestMapping(value = "/delete",method = RequestMethod.DELETE)
    @ApiOperation(value = "删除一个角色", notes = "好像爱这个世界")
    public Map<String,String> Delete(@RequestParam String role) {

        map.remove(role);
        return map;
    }

    @RequestMapping(value = "/select",method = RequestMethod.GET)
    @ApiOperation(value = "查询所有角色", notes = "好像爱这个世界")
    public Map<String,String> Select() {

        for(Map.Entry<String,String> entry:map.entrySet()){
            System.out.println("角色:" + entry.getKey() + "  姓名: "+entry.getValue());
        }
        return map;
    }

    @RequestMapping(value = "/update",method = RequestMethod.PUT)
    @ApiOperation(value = "更新一个角色姓名", notes = "好像爱这个世界")
    public Map<String,String> Update(@RequestParam String role,@RequestParam String name) {

        map.put(role,name);
        return map;
    }










}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
springboot文件上传简单实例 使用MultipartFile

SpringBoot结合MultipartFile类实现文件上传与文件下载

springboot+vue练手级项目,真实的在线博客系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值