zoukankan      html  css  js  c++  java
  • springboot集成mybatis,热部署以及整合Swagger2

    本文是作者原创,版权归作者所有.若要转载,请注明出处.

    springboot集成mybatis

    1.新建Springboot项目(略)

    2.导入相关依赖

    <!--spring-boot-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.6.RELEASE</version>
        </parent>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!--web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--test-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--Druid 数据源-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.21</version>
            </dependency>
            <!--devtools热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>
            <!-- swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <!-- swagger-ui -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>
            
        </dependencies>
    
        <build>
            <plugins>
                <!--maven插件-->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    
            <!--加载xml等文件为资源文件-->
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                        <include>**/*.properties</include>
                        <include>**/*.tld</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>

    3. 修改application.yml配置文件

    server:
      port: 5000 #端口号
      servlet:
        context-path: /pdzx #项目路径
    
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/pdzx?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT%2B8
        username: xxx
        password: xxx
      jackson:
        #格式化日期
        date-format:  yyyy-MM-dd HH:mm:ss
        #时区配置
        time-zone: Asia/Shanghai
      devtools:
          restart:
            enabled: true  #设置开启热部署
            additional-paths: src/main/java #重启资源目录
    
    mybatis:
      type-aliases-package: com.pdzx.po #别名
      mapper-locations: classpath:com/pdzx/mapper/*.xml  #mybatis的sql文件xml路径配置

    3. 新建包名,如下图

    dao层

    @Repository
    public interface VideoInfoMapper {
    
        int deleteByPrimaryKey(Integer id);
    
        int insert(VideoInfo record);
    
        int insertSelective(VideoInfo record);
    
        VideoInfo selectByPrimaryKey(Integer id);
    
        int updateByPrimaryKeySelective(VideoInfo record);
    
        int updateByPrimaryKey(VideoInfo record);
    }

    service层

    public interface VideoInfoService {
        VideoInfo selectByPrimaryKey(Integer id);
    }

    实现类

    @Service
    public class VideoInfoServiceImpl implements VideoInfoService {
    
        @Autowired
        private VideoInfoMapper videoInfoMapper;
    
        @Override
        public VideoInfo selectByPrimaryKey(Integer id) {
            return videoInfoMapper.selectByPrimaryKey(id);
        }
    }

    controller层

    @RequestMapping("video")
    @RestController
    public class VideoInfoController {
        @Autowired
        private VideoInfoService videoInfoService;
    
        @GetMapping("/selectByPrimaryKey")
        public VideoInfo selectByPrimaryKey(Integer id){
            return videoInfoService.selectByPrimaryKey(id);
        }
    
        @GetMapping("/hello")
        public String hello(){
            return "hello springboot-mybatis-xml";
        }
    
        @GetMapping("/hi")
        public String hi(){
            return "hi springboot-mybatis-xml";
        }
    
    }

     7.生成文件后在启动类中添加注解@MapperScan

    @MapperScan("com.pdzx.dao")
    @SpringBootApplication
    public class VideoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(VideoApplication.class);
        }
    
    }

    8.访问以下路径,测试

    http://localhost:5000/pdzx/video/selectByPrimaryKey?id=83

    看结果

     至此,springboot集成mybatis成功

    springboot集成热部署

    1.注意依赖

    <!--devtools热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>

    2.注意配置

    spring:
      devtools:
          restart:
            enabled: true  #设置开启热部署
            additional-paths: src/main/java #重启资源目录

    3.设置IDEA的自动编译:,如图

     4.安装ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running,如图

     5.重启idea即可生效

    SpringBoot整合Swagger2

    1.两个Swagger2相关的依赖

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

    2.Swagger2配置

    package com.pdzx.config;
    
    import springfox.documentation.service.Contact;
    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.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * Created by bianxh on 2019/1/21.
     */
    @Configuration
    @EnableSwagger2//启用Swagger2
    public class SwaggerApp {
    
        //http://localhost:5000/pdzx/swagger-ui.html   项目路径/swagger-ui.html
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .pathMapping("/")//配置映射路径和要扫描的接口的位置
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.pdzx.controller"))//配置要扫描的接口的位置
                    .paths(PathSelectors.any())
                    .build().apiInfo(new ApiInfoBuilder()//配置一下Swagger2文档网站的信息
                            .title("SpringBoot整合Swagger")//网站的title
                            .description("本站是平大客户端的接口文档信息")//网站的描述
                            .version("9.0")//接口版本
                            .contact(new Contact("平大开发部","http://www.shpingda.com/","xxx@gmail.com"))//联系人的信息
                            .license("The Apache License")//使用的协议
                            .licenseUrl("http://www.baidu.com")//
                            .build());
        }
    }

    3.创建接口

    @RestController
    @Api(tags = "用户管理相关接口")//可以用来标记当前Controller的功能
    @RequestMapping("/user")
    public class UserController {
    
        @PostMapping("/addUser")
        @ApiOperation("添加用户的接口")//用来标记一个方法的作用
        @ApiImplicitParams(//如果有多个参数,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中
                {
                    //用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入
                @ApiImplicitParam(name = "username", value = "用户名", defaultValue = "李四"),
                //假如开发者需要指定一个参数必填,@RequestParam(required = true)注解不能省略
                @ApiImplicitParam(name = "address", value = "用户地址", defaultValue = "深圳", required = true)
                }
        )
        public User addUser(@RequestParam( "username") String username, @RequestParam( "address") String address) {
            User user = new User();
            user.setUsername(username);
            user.setAddress(address);
            return user;
        }
    
        @GetMapping("/getUserById")
        @ApiOperation("根据id查询用户的接口")
        @ApiImplicitParam(name = "id", value = "用户id", defaultValue = "99", required = true)
        public User getUserById(@RequestParam( "id")  Integer id) {
            User user = new User();
            user.setId(id);
            return user;
        }
    
        @PutMapping("/updateUserById")
        @ApiOperation("根据id更新用户的接口")//如果参数是一个对象(例如上文的更新接口),对于参数的描述也可以放在实体类中
        public User updateUserById(@RequestBody User user) {
            return user;
        }
    }

    user

    @ApiModel
    public class User {
    
        @ApiModelProperty(value = "用户id")
        private Integer id;
        @ApiModelProperty(value = "用户名")
        private String username;
        @ApiModelProperty(value = "用户地址")
        private String address;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
    }

    4.访问一下路径(项目路径/swagger-ui.html)

    看结果

     5.测试,点击Execute按钮,表示发送请求进行测试。测试结果会展示在下面的Response中

  • 相关阅读:
    【AS3代码】小游戏打飞机源代码
    【AS3代码】键盘的输入和输出
    PHP多维数组排序
    【AS3代码】一个完整的游戏框架
    【AS3代码】小画板升级版(带重绘回放和清空功能)
    Liunx命令工作总结(1)
    Java NIO基础 我们到底能走多远系列(17)
    ibatis 一对多 解决方案
    图片上传+预览+剪切解决方案我们到底能走多远系列(20)
    Liunx命令工作总结(2)
  • 原文地址:https://www.cnblogs.com/lusaisai/p/13044415.html
Copyright © 2011-2022 走看看