springBoot 2.3.1整合mybatis-plus

1、pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.1.RELEASE
         
    
    com.hzau
    mybatis-plus-demo
    0.0.1-SNAPSHOT
    mybatis-plus-demo
    Demo project for Spring Boot

    
        1.8
    

    

        
        
            org.springframework.boot
            spring-boot-starter-web
        
            
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.2
        
        
        
            com.baomidou
            mybatis-plus-generator
            3.3.2
        
        
        
            org.springframework.boot
            spring-boot-starter-freemarker
        
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.23
        
        
        
            mysql
            mysql-connector-java
            runtime
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.13
        
        
            org.projectlombok
            lombok
            true
        


     
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


2、application.yml

#配置端口
server:
  port: 8082


spring:
  datasource:
    druid:
      #JDBC 配置
      url: jdbc:mysql://192.168.39.129:3306/readwrite?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      #连接池配置

      #初始化连接数目
      initial-size: 1
      #连接池支持的最大连接数。一般取值20就可以了,一般把maxActive设置成可能的并发量就行了设 0 为没有限制。
      max-active: 20
      #连接池中最小空闲连接数,当连接数少于此值时,连接池会创建连接来补充到该值的数量
      min-idle: 5
      #连接池中连接用完时,新的请求等待时间,毫秒,这里取值-1,表示无限等待,直到超时为止,也可取值9000,表示9秒后超时。
      max-wait: 1000
      #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
      pool-prepared-statements: true
      #PSCache 大小
      max-pool-prepared-statement-per-connection-size: 20
      #在连接池返回连接给调用者前用来对连接进行验证的查询 SQL,要求为一条查询语句
      validation-query: SELECT 'x'
      #在连接池返回连接给调用者前用来对连接进行验证的查询 SQL的超时时间
      validation-query-timeout: 100
      #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-borrow: false
      #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-return: false
      #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
      test-while-idle: true
      #每timeBetweenEvictionRunsMillis毫秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 30000
      max-evictable-idle-time-millis: 90000
      #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
      #监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
      filters: stat,slf4j,wall
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合并多个DruidDataSource的监控数据
      useGlobalDataSourceStat: true
  main:
    allow-bean-definition-overriding: true
mybatis-plus:
  datasource: dataSource
  mapper-locations: classpath:/mapper/*Mapper.xml
  #别名扫描
  typeAliasesPackage: com.hzau.*.entity






上面配置了数据源、mapper文件的位置、mybatis别名扫描包

3、启动类上加上

扫描mapper接口

@MapperScan({"com.hzau.*.dao","com.hzau.*.mapper"})

4、配置数据源

package com.hzau.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import lombok.Data;
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;
import java.sql.SQLException;

/**
 * @ClassName DruidDBConfig
 * @Description TODO
 * @Author yueyiming
 * @Date 2020/7/23 17:45
 * @Version 1.0
 * https://blog.csdn.net/hzau_itdog
 **/
@Data
@Configuration
@ConfigurationProperties(prefix = "spring.datasource.druid")
public class DruidDBConfig {
    private String url;
    private String username;
    private String password;
    private String driverClassName;



    /**
     * 初始化连接数目
     */
    private int initialSize;

    /**
     * 连接池支持的最大连接数。一般取值20就可以了,一般把maxActive设置成可能的并发量就行了设 0 为没有限制。
     */
    private int maxActive;

    /**
     * 连接池中最小空闲连接数,当连接数少于此值时,连接池会创建连接来补充到该值的数量
     */
    private int minIdle;


    /**
     * 连接池中连接用完时,新的请求等待时间,毫秒,这里取值-1,表示无限等待,直到超时为止,也可取值9000,表示9秒后超时。
     */
    private int maxWait;

    /**
     * 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
     */
    private boolean poolPreparedStatements;

    /**
     * PSCache 大小
     */
    private int maxPoolPreparedStatementPerConnectionSize;

    /**
     * 在连接池返回连接给调用者前用来对连接进行验证的查询 SQL,要求为一条查询语句
     */
    private String validationQuery;
    /**
     * 在连接池返回连接给调用者前用来对连接进行验证的查询 SQL的超时时间
     */
    private int validationQueryTimeout;
    /**
     * 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
     */
    private boolean testOnBorrow;

    /**
     * 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
     */
    private boolean testOnReturn;
    /**
     * 议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
     */
    private boolean testWhileIdle;

    /**
     * 每timeBetweenEvictionRunsMillis毫秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止
     */
    private int timeBetweenEvictionRunsMillis;


    private int minEvictableIdleTimeMillis;
    private int maxEvictableIdleTimeMillis;

    /**
     * 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
     * 监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
     */
    private String filters;
    /**
     * 通过connectProperties属性来打开mergeSql功能;慢SQL记录
     */

    private String connectionProperties;

    /**
     * 合并多个DruidDataSource的监控数据
     */
    private boolean useGlobalDataSourceStat;


    @Bean     //声明其为Bean实例
    @Primary  //在同样的DataSource中,首先使用被标注的DataSource
    public DataSource dataSource() {
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(this.url);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMaxActive(maxActive);
        datasource.setMinIdle(minIdle);
        datasource.setMaxWait(maxWait);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        datasource.setValidationQuery(validationQuery);
        datasource.setValidationQueryTimeout(validationQueryTimeout);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis);


        try {
            datasource.setFilters(filters);

        } catch (SQLException e) {

        }
        datasource.setConnectionProperties(connectionProperties);
        datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat);

        return datasource;
    }

    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        // IP白名单
        // servletRegistrationBean.addInitParameter("allow", "192.168.2.25,127.0.0.1");
        // IP黑名单(共同存在时,deny优先于allow)
        //servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
        //控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "9527");
        //是否能够重置数据 禁用HTML页面上的“Reset All”功能
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }


}

 

你可能感兴趣的:(mybatis-plus)