SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2

SpringBoot+Mybatis-Generator+Mybatis+Druid+Pagehelper+Swagger2环境搭建

  • 一、创建项目
  • 二、添加依赖
  • 三、application.properties(改为application.yml)文件配置
  • 四、集成代码逆向生成插件mybatis-generator
  • 五、集成mybatis
  • 六、集成Druid
  • 七、集成Pagehelper分页插件
  • 八、集成Swagger2
  • 九、项目地址

一、创建项目

使用的开发工具是IDEA,框架是SpringBoot2.1.0,SpringBoot2.0要求jdk版本必须在1.8以上。
新建项目时选择Spring Initializr
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第1张图片
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第2张图片
选择依赖
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第3张图片
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第4张图片
点按钮【Finish】后项目被创建。
数据库使用的是Mysql,在数据库中新建了测试使用的user表,测试数据如下
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第5张图片

二、添加依赖

项目创建后pom.xml文件已包含的依赖项有

  	
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

在pom.xml的中添加依赖项Druid,Pagehelper,Swagger2

 	
        
            com.alibaba
            druid-spring-boot-starter
            1.1.10
        
        
        
            com.alibaba
            fastjson
            1.2.31
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.3
        
        
        
            io.springfox
            springfox-swagger2
            2.5.0
        
        
            io.springfox
            springfox-swagger-ui
            2.5.0
        

三、application.properties(改为application.yml)文件配置

将application.properties文件修改为application.yml。yml文件采用的是树状结构,清晰明了。
yml文件所有的键后面的冒号一定要跟一个空格,否则会报配置解析错误。

配置端口
server:
  #配置端口
  port: 8089
配置数据源
spring:
  datasource:
    #如果存在多个数据源,监控的时候通过名字来区分开来
    name: mysql_springboot
    #使用Druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      filters: stat
      driver-class-name: com.mysql.cj.jdbc.Driver
      #连接数据库的url
      url: jdbc:mysql://localhost:3306/springboot_db?useUnicode=true&characterEncoding=utf-8&useSSL=true
      #连接数据库的账号
      username: root
      #连接数据库的密码
      password: 123456
      #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
      initial-size: 1
      #最小连接池数量
      min-idle: 1
      #最大连接池数量
      max-active: 20
      #获取连接池最大等待时间,单位毫秒
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      #连接保持空闲而不被驱逐的最长时间
      min-evictable-idle-time-millis: 300000
      #用来检测连接是否是有效的SQL,要求是一个查询语句
      validation-query: SELECT 'x'
      #申请连接的时候检测,如果空闲时间大于time-between-eviction-runs-millis,执行validation检测连接是否有效
      test-while-idle: true
      #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-borrow: false
      #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-return: false
      #是否缓存preparedStatement,即PSCache
      pool-prepared-statements: false
      #要启用PSCache,必须配置大于0,当大于0时,pool-prepared-statements自动触发修改为true
      max-pool-prepared-statement-per-connection-size: 20

四、集成代码逆向生成插件mybatis-generator

(1)在pom.xml中添加mybatis-generator插件

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    
                    ${basedir}/src/main/resources/generator/generatorConfig.xml
                    true
                    true
                
            
            
        
    

(2)在resources目录下创建generator文件夹,在新建的generator文件夹中创建generatorConfig.xml配置文件,generator.properties文件。
generatorConfig.xml通过properties标签读取generator.properties文件的配置。
generatorConfig.xml配置文件如下:




    
    
    
    
    
        
        
        
        
            
        
        
            
            
        
        
        
            
        
        
        
            
        
        
        

generator.properties文件如下:

# 数据库驱动:选择你的本地硬盘上面的数据库驱动包
classPathEntry = C:/Users/shaotiliu/.m2/repository/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar
# 数据库名称
db = springboot_db
#数据库登录用户名
username = root
#数据库登录密码
password = 123456
# 生成pojo的包名位置 在src/main/java目录下
pojoTargetPackage = com.springboot.frame.entity
# 生成DAO的包名位置 在src/main/java目录下
daoTargetPackage = com.springboot.frame.dao
# 生成Mapper的包名位置 位于src/main/resources目录下
mapperTargetPackage = mapper

(3)运行mybatis-generator插件
在IDEA中打开Edit Configurations;
点击左上角的+号并选择Maven;
在新出现的界面上填写Name,Working directory,Command line这三个地方,其中Name随便命名,Working directory是创建工程的路径,,Command line写的是maven插件的命令【mybatis-generator:generate】填完后点击按钮【Apply】和【OK】;
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第6张图片
选择新建的generator,点击绿色三角形运行。
此时,entity、dao、mapper目录下都自动生成了指定的数据库对应的实体类、接口、xml文件,如下图所示
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第7张图片

五、集成mybatis

(1)配置mybatis扫描地址
在application.yml配置mapper.xml以及javaBean类的地址

配置mybatis
mybatis:
  #mapper.xml包地址
  mapper-locations: classpath:/mapper/*.xml
  #javaBean类的地址
  type-aliases-package: com.spring.demo.entity

(2)在启动类文件中开启Mapper扫描注解
即在启动类添加注解MapperScan,扫描指定包中的接口

@MapperScan("com.springboot.frame.dao")

(3)新建controller类测试

@RestController
public class testController {
    @Autowired
    userMapper user;
    
    @RequestMapping(value="/test",method = RequestMethod.GET)
    public Object test(@RequestParam("id") Integer id){
        return user.selectByPrimaryKey(id);
    }
}

运行工程,浏览器访问localhost:8089/test?id=1
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第8张图片
打印了user表中id=1的记录,表明mybatis集成成功。

六、集成Druid

前面pom.xml配置数据源时已经配置了Druid。
在dao、entity、controller包同级创建config包,在config包中创建DruidConfig.java配置文件。
DruidConfig.class文件内容:

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;

@Configuration
public class DruidConfig {

    @Bean()
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    public DataSource druidDataSource() {
        System.out.println("注入datasource");
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    @Bean
    public ServletRegistrationBean statViewServlet() {
        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //添加初始化参数:initParams
        //白名单:
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        //登录查看信息的账号.
        servletRegistrationBean.addInitParameter("loginUsername","admin");
        //登录查看信息的密码.
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    /**
     * 注册一个:filterRegistrationBean
     * @return
     */
    @Bean
    public FilterRegistrationBean statViewFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

Druid监控的访问路径为localhost:8089/druid/login.html
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第9张图片
用代码中设置的账号和密码登录
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第10张图片

七、集成Pagehelper分页插件

(1)配置Pagehelper分页插件
在application.yml添加

配置分页插件
 #pagehelper分页插件
pagehelper:
  #数据库的方言
  helper-dialect: mysql
  #启用合理化,如果pageNum < 1会查询第一页,如果pageNum > pages会查询最后一页
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

(2)使用Pagehelper分页插件
在调用Mapper的接口之前,使用Pagehelper的startPage()方法,即可实现分页效果。
Controller类示例函数:

@RequestMapping(value="/all",method = RequestMethod.GET)
  public Object getAllUsers(@RequestParam("pageNum") Integer pageNum,
                            @RequestParam("pageSize") Integer pageSize){
      PageHelper.startPage(pageNum,pageSize);
      return user.selectAllUsers();
  }    

运行工程,浏览器访问localhost:8089/all?pageNum=2&pageSize=3,得到user表中分页后第二页的三条数据。
在这里插入图片描述

八、集成Swagger2

(1)在启动类同级目录创建SwaggerConfig.java配置文件

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.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 {
    //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.springboot.frame.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //页面标题
                .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                //创建人
                .contact(new Contact("MarryFeng", "http://www.baidu.com", ""))
                //版本号
                .version("1.0")
                //描述
                .description("API 描述")
                .build();
    }
}

(2)SwaggerConfig.java设置扫描的包是com.springboot.frame.controller,在controller类的方法添加@Api注解,swagger将会自动扫描类。
添加注解
@ApiOperation:描述API接口的作用
@ApiImplicitParam:说明一个参数信息
@ApiImplicitParams:可说明多个参数信息
@ApiResponses:描述请求网址返回状态码信息
示例:

    @ApiOperation(value = "查询所有user的信息接口",notes = "查询数据库中所有user的信息")
    @ApiImplicitParam(name ="pageNum",value = "第几页",dataType = "Integer",paramType = "query",required = true,example = "3")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageSize",value = "每页显示user信息条数",dataType = "Integer",paramType = "query",required = true,example = "3")
    })
    @ApiResponses({
            @ApiResponse(code=400,message = "请求参数没有填好"),
            @ApiResponse(code=404,message="请求路径没有找到")
    })
    @RequestMapping(value="/all",method = RequestMethod.GET)
    public Object getAllUsers(@RequestParam("pageNum") Integer pageNum,
                              @RequestParam("pageSize") Integer pageSize){
        PageHelper.startPage(pageNum,pageSize);
        return user.selectAllUsers();
    }
 

(3)访问地址是localhost:8089/swagger-ui.html
SpringBoot+Generator+Mybatis+Druid+Pagehelper+Swagger2_第11张图片

九、项目地址

可至Github下载项目参考:Github-SpringBootFrame

你可能感兴趣的:(SpringBoot)