一:整合Mysql+Druid
主要依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--加这个表示该依赖在编译的时候不会使用到,只有在运行的时候才会使用到-->
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
</dependencies>
编写配置类
spring:
datasource:
druid:
username: root
password: root123456
jdbcUrl: jdbc:mysql://zzw.study:3306/boot-study
driverClassName: com.mysql.cj.jdbc.Driver
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
filters: stat,wall
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
# 开启慢sql记录功能
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
编写自定义数据源属性配置类
package com.study.jdbcanddruid.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.datasource.druid")
@Getter
@Setter
public class DruidConfigProperties {
private String jdbcUrl;
private String driverClassName;
private Integer initialSize;
private Integer maxActive;
private Integer minIdle;
private long maxWait;
private boolean poolPreparedStatements;
public String filters;
private String username;
private String password;
}
编写druid配置类
package com.study.jdbcanddruid.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
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 java.sql.SQLException;
@Configuration
@EnableConfigurationProperties(value = DruidConfigProperties.class)
@SuppressWarnings("all")
public class DruidConfig {
@Autowired
private DruidConfigProperties druidConfigProperties;
@Bean(initMethod = "init")
public DruidDataSource dataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUsername(druidConfigProperties.getUsername());
dataSource.setPassword(druidConfigProperties.getPassword());
dataSource.setUrl(druidConfigProperties.getJdbcUrl());
dataSource.setDriverClassName(druidConfigProperties.getDriverClassName());
dataSource.setInitialSize(druidConfigProperties.getInitialSize());
dataSource.setMinIdle(druidConfigProperties.getMinIdle());
dataSource.setMaxActive(druidConfigProperties.getMaxActive());
dataSource.setMaxWait(druidConfigProperties.getMaxWait());
dataSource.setFilters(druidConfigProperties.getFilters());
dataSource.setPoolPreparedStatements(druidConfigProperties.isPoolPreparedStatements());
return dataSource;
}
/**
* 配置druid管理后台的servlet
* @return
*/
@Bean
public ServletRegistrationBean statViewSerlvet() {
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
// 添加IP白名单
bean.addInitParameter("allow", "127.0.0.1");
// 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
bean.addInitParameter("deny", "192.168.25.123");
// 添加控制台管理用户
bean.addInitParameter("loginUsername", "admin");
bean.addInitParameter("loginPassword", "123456");
// 是否能够重置数据
bean.addInitParameter("resetEnable", "false");
return bean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean frb = new FilterRegistrationBean(new WebStatFilter());
// 添加过滤规则
frb.addUrlPatterns("/*");
// 忽略过滤格式
frb.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");
return frb;
}
}
测试 编写controller
package com.study.jdbcanddruid.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class DemoController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/test01")
public Object getTask() {
List<Map<String, Object>> maps = jdbcTemplate
.queryForList("select * from test limit 2");
return maps;
}
}
实用druid数据监控功能:
image.png
二:整合MyBatis
添加依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
配置mybaits
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:/mapper/*.xml