- Spring Boot 教程
- Spring Boot - 首页
- Spring Boot - 简介
- Spring Boot - 快速入门
- Spring Boot - 启动引导
- Spring Tool Suite
- Spring Boot - Tomcat 部署
- Spring Boot - 构建系统
- Spring Boot - 代码结构
- Spring Bean & 依赖注入
- Spring Boot - 运行器
- Spring Boot - 启动器
- Spring Boot - 应用属性
- Spring Boot - 配置
- Spring Boot - 注解
- Spring Boot - 日志
- 构建 RESTful Web 服务
- Spring Boot - 异常处理
- Spring Boot - 拦截器
- Spring Boot - Servlet 过滤器
- Spring Boot - Tomcat 端口号
- Spring Boot - Rest Template
- Spring Boot - 文件处理
- Spring Boot - 服务组件
- Spring Boot - Thymeleaf
- 使用 RESTful Web 服务
- Spring Boot - CORS 支持
- Spring Boot - 国际化
- Spring Boot - 定时任务
- Spring Boot - 启用 HTTPS
- Spring Boot - Eureka 服务器
- 使用 Eureka 注册服务
- 网关代理服务器和路由
- Spring Cloud 配置服务器
- Spring Cloud 配置客户端
- Spring Boot - Actuator
- Spring Boot - Admin 服务器
- Spring Boot - Admin 客户端
- Spring Boot - 启用 Swagger2
- Spring Boot - 使用 SpringDoc OpenAPI
- Spring Boot - 创建 Docker 镜像
- 跟踪微服务日志
- Spring Boot - Flyway 数据库
- Spring Boot - 发送邮件
- Spring Boot - Hystrix
- Spring Boot - Web Socket
- Spring Boot - 批处理服务
- Spring Boot - Apache Kafka
- Spring Boot - Twilio
- Spring Boot - 单元测试用例
- Rest Controller 单元测试
- Spring Boot 数据库处理
- 保护 Web 应用
- Spring Boot - 使用 JWT 的 OAuth2
- Spring Boot - Google Cloud Platform
- Spring Boot - Google OAuth2 登录
- Spring Boot 资源
- Spring Boot - 快速指南
- Spring Boot - 有用资源
- Spring Boot - 讨论
Spring Boot 数据库处理
Spring Boot 提供了非常好的支持来创建数据库的 DataSource。我们不需要编写任何额外的代码来在 Spring Boot 中创建 DataSource。只需添加依赖项并进行配置细节就足以创建 DataSource 并连接数据库。
在本章中,我们将使用 Spring Boot JDBC 驱动程序连接来连接数据库。
首先,我们需要在我们的构建配置文件中添加 Spring Boot Starter JDBC 依赖项。
Maven 用户可以在 pom.xml 文件中添加以下依赖项。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
Gradle 用户可以在 build.gradle 文件中添加以下依赖项。
compile('org.springframework.boot:spring-boot-starter-jdbc')
连接 H2 数据库
要连接 H2 数据库,我们需要在我们的构建配置文件中添加 H2 数据库依赖项。
对于 Maven 用户,请在您的 pom.xml 文件中添加以下依赖项。
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>
对于 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 文件中添加以下依赖项。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>
对于 Gradle 用户,请在您的 build.gradle 文件中添加以下依赖项。
compile('mysql:mysql-connector-j')
现在,按照以下步骤在 MySQL 中创建数据库和表:
对于 properties 文件用户,请在 application.properties 文件中添加以下属性。
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/PRODUCTSERVICE spring.datasource.username = root spring.datasource.password = root
对于 YAML 用户,请在 application.yml 文件中添加以下属性。
spring: datasource: url: "jdbc:mysql://127.0.0.1:3306/PRODUCTSERVICE" username: "root" password: "root"
连接 Redis
Redis 是一个开源数据库,用于存储内存中的数据结构。要在 Spring Boot 应用程序中连接 Redis 数据库,我们需要在我们的构建配置文件中添加 Redis 依赖项。
Maven 用户应该在您的 pom.xml 文件中添加以下依赖项。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>
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<String, Object> redisTemplate() { RedisTemplate<String, Object> 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<String, Object> redis; Map<Object,Object> datalist = redis.opsForHash().entries(“Redis_code_index_key”);
JDBCTemplate
要在 Spring Boot 应用程序中使用 JdbcTemplate 访问关系数据库,我们需要在我们的构建配置文件中添加 Spring Boot Starter JDBC 依赖项。
然后,如果您 `@Autowired` 了 JdbcTemplate 类,Spring Boot 会自动连接数据库并为 JdbcTemplate 对象设置 Datasource。
@Autowired JdbcTemplate jdbcTemplate; Collection<Map<String, Object>> rows = jdbc.queryForList("SELECT QUERY");
`@Repository` 注解应该添加到类文件中。`@Repository` 注解用于为您的 Spring Boot 应用程序创建数据库资源库。
@Repository public class ProductServiceDAO { }
多个 DataSource
我们可以在单个 Spring Boot 应用程序中保留 'n' 个 DataSource。这里给出的示例展示了如何在 Spring Boot 应用程序中创建多个数据源。现在,在 application.properties 文件中添加两个数据源的配置详细信息。
对于 properties 文件用户,请将以下属性添加到您的 application.properties 文件中。
spring.dbProductService.url = jdbc:mysql://127.0.0.1:3306/PRODUCTSERVICE spring.dbProductService.username = root spring.dbProductService.password = root spring.dbUserService.url = jdbc:mysql://127.0.0.1:3306/USERSERVICE spring.dbUserService.username = root spring.dbUserService.password = root
YAML 用户应该在您的 application.yml 文件中添加以下属性。
spring: dbProductService: url: "jdbc:mysql://127.0.0.1:3306/PRODUCTSERVICE?autoreconnect=true" password: "root" username: "root" dbUserService: url: "jdbc:mysql://127.0.0.1:3306/USERSERVICE?autoreconnect=true" password: "root" username: "root"
现在,创建一个配置类来为多个数据源创建 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;