一、添加Druid、MySQL連接池、mybatis依賴
<!--整合Druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.11</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency>
二、配置DruidDataSourceConfig
@Configuration public class DruidDataSourceConfigurer { @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driverClassName}") private String driverClassName; @Value("${spring.datasource.initialSize}") private int initialSize; @Value("${spring.datasource.minIdle}") private int minIdle; @Value("${spring.datasource.maxActive}") private int maxActive; @Value("${spring.datasource.maxWait}") private int maxWait; @Value("${spring.datasource.timeBetweenEvictionRunsMillis}") private int timeBetweenEvictionRunsMillis; @Value("${spring.datasource.minEvictableIdleTimeMillis}") private int minEvictableIdleTimeMillis; @Value("${spring.datasource.validationQuery}") private String validationQuery; @Value("${spring.datasource.testWhileIdle}") private boolean testWhileIdle; @Value("${spring.datasource.testOnBorrow}") private boolean testOnBorrow; @Value("${spring.datasource.testOnReturn}") private boolean testOnReturn; @Value("${spring.datasource.poolPreparedStatements}") private boolean poolPreparedStatements; @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}") private int maxPoolPreparedStatementPerConnectionSize; @Value("${spring.datasource.filters}") private String filters; @Value("${spring.datasource.connectionProperties}") private String connectionProperties; @Value("${spring.datasource.useGlobalDataSourceStat}") private boolean useGlobalDataSourceStat; /** * @Bean 創建一個實例 * @Primary 在同樣的DataSource中,首先使用被標註的DataSource * @return */ @Bean @Primary public DruidDataSource dataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(this.dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); //configuration datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); datasource.setPoolPreparedStatements(poolPreparedStatements); datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat); try { datasource.setFilters(filters); } catch (SQLException e) { System.err.println("druid configuration initialization filter: "+ e); } datasource.setConnectionProperties(connectionProperties); return datasource; } }
三、配置DruidStatFilter
@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = { //定義可以忽略的資源文件 @WebInitParam(name="exclusion",value = "*.js,*gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*") }) public class DruidStatFilter extends WebStatFilter { }
四、application.porperties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #連接池配置 spring.datasource.url=jdbc:mysql://localhost:3306/cloud01??useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.jdbc.Driver #初始化大小 spring.datasource.initialSize=5 #最小連接數 spring.datasource.minIdle=5 #最大連接數 spring.datasource.maxActive=20 #連接等待超時時間 spring.datasource.maxWait=60000 #配置隔多久進行一次檢測(檢測可以關閉的空閒連接),檢測需要關閉的空閒連接,單位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 #配置連接在池中的最小生存時間 spring.datasource.minEvictableIdleTimeMillis=300000 #校驗sql、oracle配置,如果不配置validationQuery,則下面三項無效 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打開PSCache,並且指定每個連接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆 spring.datasource.filters=stat,wall,slf4j # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 #合併多個DruidDataSource的監控數據 spring.datasource.useGlobalDataSourceStat=true #mybatis的配置文件 mybatis.config-location=classpath:/mybatis-config.xml mybatis.mapper-locations=classpath:/mapper/*.xml
五、mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--<settings>--> <!--<setting name="cacheEnabled" value="true"/>--> <!--</settings>--> <typeAliases> <typeAlias type="com.itwx.druid.model.Dept" alias="Dept"/> </typeAliases> </configuration>
六、主啓動類
@SpringBootApplication //該註解使Servlet生效 @ServletComponentScan public class SpringbootDruidApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDruidApplication.class, args); } /**使用以下註解方式可以忽略DruidDataSourceConfigurer配置*/ // @Bean("druidDataSource") // @ConfigurationProperties(prefix = "spring.datasource") // public DataSource druidDataSource(){ // return new DruidDataSource(); // } }