1、导入所用依赖
若要使springboot通过jdbc与数据源做连接,首先就是要导入依赖,下面就是一些需要的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<!--springboot-jdbc默认的数据源为HikariCP-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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>
<!--引入log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
其中`````依赖这是每个springboot项目都要导入的,说明这是一个web项目,其中自带了很多功能 tomcat、json等
spring-boot-starter-jdbc
和mysql-connector-java
做数据库连接必须要导入的依赖
spring-boot-starter-jdbc
父依赖 默认为Hikari
数据源
若将数据源换为druid
数据源就导入该依赖
log4j
为日志依赖,其中还要配置log4j.properties
文件
2、导入数据源的配置
(1)、若只做数据库连接只导入以下该属性就可以,默认数据源为Hikari
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ******
(2)、若将数据源更换为druid
通过ttype
并导入该数据源连接池所配属性的参数
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
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:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#当添加上druid数据源;连接池的属性后 通过调试看出显然没有起作用 因为在dataProperties.class中没有以上的属性
#该属性是druid特有的属性 所以要手动添加一个配置类
Spring Boot 默认是不注入这些属性值的,需要自己绑定
以上属性是druid 数据源专有配置
3、在controller方法中进行测试是否生效
@RestController
public class UserController {
@Autowired
private DataSource dataSource;
@RequestMapping("/user")
public String hello() {
System.out.println(dataSource);
return "hello";
}
}
通过打断点可以看出该数据源更换成功为druid
数据源 但配置的属性参数仍然没有生效
通过打开源码dataSourceAutoConfigure
的DataSourceProperties.class
可以看出该类下并没有druid
的特有属性,所以并不能生效
所以我们要手动创建一个配置类,把druid的属性注入到spring的IOC容器中来
在config
包下面创建一个DruidConfig
配置类
// 配置类
@Configuration
public class DruidConfig {
//若使用该数据源 必须存在该class
@Bean
// 必须将druid数据源下的属性 与该类绑定起来
//将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建
@ConfigurationProperties(prefix = "spring.datasource")
public DruidDataSource druidDataSource(){
return new DruidDataSource();
}
}
那么重新调试可以看出 我们手动添加的druid连接池的属性就已经生效了
4、在resource
下面创建log4j.properties
配置类
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %d{yyyy-MM-dd HH:mm:ss} - %m%n
简单的数据库连接就这些内容