APP下载

Springboot(四十六)数据库源(连线数据库)

消息来源:baojiabao.com 作者: 发布时间:2024-11-27

报价宝综合消息Springboot(四十六)数据库源(连线数据库)

Spring Boot为建立数据库的资料来源提供了非常好的支援。不需要编写任何额外的程式码来在Spring Boot中建立资料来源(DataSource)。 只需新增依赖项并执行配置详细资讯就足以建立DataSource并连线数据库。

在本章中,将使用Spring Boot JDBC驱动程式连线来连线数据库。

首先,需要在构建配置档案中新增Spring Boot Starter JDBC依赖项。

Maven使用者可以在pom.xml 档案中新增以下依赖项。

org.springframework.boot

spring-boot-starter-jdbc

Gradle使用者可以在build.gradle 档案中新增以下依赖项。

compile(\'org.springframework.boot:spring-boot-starter-jdbc\')

连线到H2数据库

要连线H2数据库,需要在构建配置档案中新增H2数据库依赖项。

对于Maven使用者,请在pom.xml 档案中新增以下依赖项。

com.h2database

h2

对于Gradle使用者,请在build.gradle 档案中新增以下依赖项。

compile(\'com.h2database:h2\')

需要在src/main/resources 目录下建立schema.sql 档案和data.sql 档案来连线H2数据库。

schema.sql 档案的内容如下所示。

CREATE TABLE PRODUCT (ID INT PRIMARY KEY, PRODUCT_NAME VARCHAR(25));

data.sql 档案的内容如下所示。

INSERT INTO PRODUCT (ID,PRODUCT_NAME) VALUES (1,\'Honey\');

INSERT INTO PRODUCT (ID,PRODUCT_NAME) VALUES (2,\'Almond\');

连线MySQL

要连线MySQL数据库,需要将MySQL依赖项新增到我们的构建配置档案中。

对于Maven使用者,请在pom.xml 档案中新增以下依赖项。

mysql

mysql-connector-java

对于Gradle使用者,请在build.gradle 档案中新增以下依赖项。

compile(\'mysql:mysql-connector-java\')

现在,在MySQL中建立数据库和表,如图所示 -

对于属性档案使用者,请在application.properties 档案中新增以下属性。

spring.datasource.driverClassName = com.mysql.jdbc.Driver

spring.datasource.url = jdbc:mysql://localhost:3306/PRODUCTSERVICE?autoreconnect = true

spring.datasource.username = root

spring.datasource.password = root

spring.datasource.testOnBorrow = true

spring.datasource.testWhileIdle = true

spring.datasource.timeBetweenEvictionRunsMillis = 60000

spring.datasource.minEvictableIdleTimeMillis = 30000

spring.datasource.validationQuery = SELECT 1

spring.datasource.max-active = 15

spring.datasource.max-idle = 10

spring.datasource.max-wait = 8000

对于YAML使用者,请在application.yml 档案中新增以下属性。

spring:

datasource:

driverClassName: com.mysql.jdbc.Driver

url: "jdbc:mysql://localhost:3306/PRODUCTSERVICE?autoreconnect=true"

username: "root"

password: "root"

testOnBorrow: true

testWhileIdle: true

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 30000

validationQuery: SELECT 1

max-active: 15

max-idle: 10

max-wait: 8000

连线Redis

Redis是一个用于储存内存资料结构的开源数据库。 要在Spring Boot应用程序中连线Redis数据库,需要在构建配置档案中新增Redis依赖项。

Maven使用者应在pom.xml 档案中新增以下依赖项。

org.springframework.boot

spring-boot-starter-redis

Gradle使用者应在build.gradle 档案中新增以下依赖项。

compile(\'org.springframework.boot:spring-boot-starter-data-redis\')

对于Redis连线,需要使用RedisTemplate。 对于RedisTemplate,需要提供JedisConnectionFactory的详细资讯。

@Bean

JedisConnectionFactory jedisConnectionFactory() {

JedisConnectionFactory jedisConFactory = new JedisConnectionFactory();

jedisConFactory.setHostName("localhost");

jedisConFactory.setPort(6000);

jedisConFactory.setUsePool(true);

return jedisConFactory;

}

@Bean

public RedisTemplate redisTemplate() {

RedisTemplate template = new RedisTemplate();

template.setConnectionFactory(jedisConnectionFactory());

template.setKeySerializer(new StringRedisSerializer());

template.setHashKeySerializer(new StringRedisSerializer());

template.setHashValueSerializer(new StringRedisSerializer());

template.setValueSerializer(new StringRedisSerializer());

return template;

}

现在自动连线RedisTemplate类并从Redis数据库访问资料。

@Autowired

RedisTemplate redis;

Map datalist = redis.opsForHash().entries(“Redis_code_index_key”);

JdbcTemplate

要在Spring Boot应用程序中使用JdbcTemplate访问关系数据库,需要在构建配置档案中新增Spring Boot Starter JDBC依赖项。

然后,如果@Autowired JdbcTemplate类,Spring Boot会自动连线数据库并为JdbcTemplate物件设定资料来源。

@Autowired

JdbcTemplate jdbcTemplate;

Collection> rows = jdbc.queryForList("SELECT QUERY");

应将@Repository注释新增到类档案中。 @Repository注释用于为Spring Boot应用程序建立数据库储存库。

@Repository

public class ProductServiceDAO {

}

多个数据源

可以在一个Spring Boot应用程序中保留’n’个数据源。 此处给出的示例显示了如何在Spring Boot应用程序中建立多个数据源。 例如,要在应用程序属性档案中新增两个资料来源配置详细资讯。

对于属性档案使用者,请将以下属性新增到application.properties 档案中。

spring.dbProductService.driverClassName = com.mysql.jdbc.Driver

spring.dbProductService.url = jdbc:mysql://localhost:3306/PRODUCTSERVICE?autoreconnect = true

spring.dbProductService.username = root

spring.dbProductService.password = root

spring.dbProductService.testOnBorrow = true

spring.dbProductService.testWhileIdle = true

spring.dbProductService.timeBetweenEvictionRunsMillis = 60000

spring.dbProductService.minEvictableIdleTimeMillis = 30000

spring.dbProductService.validationQuery = SELECT 1

spring.dbProductService.max-active = 15

spring.dbProductService.max-idle = 10

spring.dbProductService.max-wait = 8000

spring.dbUserService.driverClassName = com.mysql.jdbc.Driver

spring.dbUserService.url = jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect = true

spring.dbUserService.username = root

spring.dbUserService.password = root

spring.dbUserService.testOnBorrow = true

spring.dbUserService.testWhileIdle = true

spring.dbUserService.timeBetweenEvictionRunsMillis = 60000

spring.dbUserService.minEvictableIdleTimeMillis = 30000

spring.dbUserService.validationQuery = SELECT 1

spring.dbUserService.max-active = 15

spring.dbUserService.max-idle = 10

spring.dbUserService.max-wait = 8000

Yaml使用者应该在application.yml 档案中新增以下属性。

spring:

dbProductService:

driverClassName: com.mysql.jdbc.Driver

url: "jdbc:mysql://localhost:3306/PRODUCTSERVICE?autoreconnect=true"

password: "root"

username: "root"

testOnBorrow: true

testWhileIdle: true

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 30000

validationQuery: SELECT 1

max-active: 15

max-idle: 10

max-wait: 8000

dbUserService:

driverClassName: com.mysql.jdbc.Driver

url: "jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true"

password: "root"

username: "root"

testOnBorrow: true

testWhileIdle: true

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 30000

validationQuery: SELECT 1

max-active: 15

max-idle: 10

max-wait: 8000

现在,建立一个Configuration 类,为多个数据源建立DataSource和JdbcTemplate。

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Primary;

import org.springframework.jdbc.core.JdbcTemplate;

@Configuration

public class DatabaseConfig {

@Bean(name = "dbProductService")

@ConfigurationProperties(prefix = "spring.dbProductService")

@Primary

public DataSource createProductServiceDataSource() {

return DataSourceBuilder.create().build();

}

@Bean(name = "dbUserService")

@ConfigurationProperties(prefix = "spring.dbUserService")

public DataSource createUserServiceDataSource() {

return DataSourceBuilder.create().build();

}

@Bean(name = "jdbcProductService")

@Autowired

public JdbcTemplate createJdbcTemplate_ProductService(@Qualifier("dbProductService") DataSource productServiceDS) {

return new JdbcTemplate(productServiceDS);

}

@Bean(name = "jdbcUserService")

@Autowired

public JdbcTemplate createJdbcTemplate_UserService(@Qualifier("dbUserService") DataSource userServiceDS) {

return new JdbcTemplate(userServiceDS);

}

}

然后,使用@Qualifier注释自动连线JDBCTemplate物件。

@Qualifier("jdbcProductService")

@Autowired

JdbcTemplate jdbcTemplate;

@Qualifier("jdbcUserService")

@Autowired

JdbcTemplate jdbcTemplate;

2020-07-22 13:55:00

相关文章