springboot 通过jdbc连接并绑定Druid数据源

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-jdbcmysql-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数据源 但配置的属性参数仍然没有生效
在这里插入图片描述
在这里插入图片描述
通过打开源码dataSourceAutoConfigureDataSourceProperties.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

简单的数据库连接就这些内容

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Spring Boot可以通过配置多个数据源来实现多数据源的使用,而Druid是一种数据库连接池,可以提供对多个数据源连接管理和监控功能。 首先,在`pom.xml`文件中添加Druid和对应数据库驱动的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> <!-- 添加其他数据库驱动的依赖 --> ``` 然后,在`application.properties`或`application.yml`中配置多个数据源的相关信息,例如: ```properties # 主数据源 spring.datasource.url=jdbc:mysql://localhost:3306/db1 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 第二个数据源 spring.datasource.second.url=jdbc:mysql://localhost:3306/db2 spring.datasource.second.username=root spring.datasource.second.password=123456 spring.datasource.second.driver-class-name=com.mysql.cj.jdbc.Driver ``` 接下来,创建多个数据源的配置类,例如: ```java @Configuration public class DataSourceConfig { @Primary @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name = "secondDataSource") @ConfigurationProperties(prefix = "spring.datasource.second") public DataSource secondDataSource() { return DruidDataSourceBuilder.create().build(); } } ``` 注意,`@Primary`注解用于标识默认的主数据源。 最后,在需要使用数据源的地方,通过`@Qualifier`注解指定要使用的数据源,例如: ```java @Service public class MyService { @Autowired @Qualifier("dataSource") private DataSource dataSource; // 使用dataSource进行数据库操作 @Autowired @Qualifier("secondDataSource") private DataSource secondDataSource; // 使用secondDataSource进行数据库操作 } ``` 这样就完成了Spring Boot中多数据源Druid的配置。在使用数据源时,可以根据需要在不同的地方注入不同的数据源
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值