您的位置:首页 > 财经 > 产业 > 沈阳网站定制_山西今日头条_地推团队去哪里找_建站快车

沈阳网站定制_山西今日头条_地推团队去哪里找_建站快车

2025/4/18 21:36:56 来源:https://blog.csdn.net/qq_22910257/article/details/147218064  浏览:    关键词:沈阳网站定制_山西今日头条_地推团队去哪里找_建站快车
沈阳网站定制_山西今日头条_地推团队去哪里找_建站快车

六. Spring Boot 与数据库

目录

JDBC 集成

Spring Data JPA

MyBatis 集成

事务管理

1、JDBC 集成

1.1 JDBC简介

1.1.1 定义和作用

JDBC(Java Database Connectivity)是Java中用于与关系型数据库进行交互的API。它为Java程序提供了一个标准的、统一的接口,使得Java程序可以连接到各种支持JDBC的数据库,如MySQL、Oracle、PostgreSQL等。通过JDBC,开发人员可以执行SQL语句,进行数据的增删改查操作。

JDBC的主要作用包括:

  • 连接数据库:通过JDBC驱动器建立与数据库的连接。
  • 执行SQL语句:支持执行各种SQL语句,如SELECT、INSERT、UPDATE、DELETE等。
  • 处理结果集:对于查询操作,JDBC提供了结果集(ResultSet)来存储和处理查询返回的数据。
  • 事务管理:支持数据库事务的提交和回滚,确保数据操作的原子性和一致性。
1.1.2 优点和缺点

优点:

  1. 跨平台性:JDBC允许Java程序在不同平台和数据库之间移植,仅需更换相应的JDBC驱动器。
  2. 统一接口:提供了统一的接口,简化了与不同数据库的交互。
  3. 功能强大:支持复杂的SQL操作和事务管理。
  4. 广泛支持:几乎所有主流数据库都提供JDBC驱动器,具有良好的生态系统。

缺点:

  1. 冗长的代码:传统的JDBC操作需要手动管理连接、预处理语句、处理结果集等,这会导致代码冗长且易于出错。
  2. 资源管理麻烦:需要手动关闭连接、语句和结果集,否则会导致资源泄漏。
  3. 不支持动态SQL:JDBC本身不直接支持动态生成SQL,需要通过字符串拼接等方式实现,可能增加SQL注入的风险。
  4. 不适合复杂对象关系映射:JDBC适合简单的CRUD操作,但在处理复杂的对象关系映射时,需要额外的ORM(对象关系映射)工具的支持。

1.2 Spring Boot 中的 JDBC 配置

1.2.1 自动配置原理

Spring Boot通过 starters 机制自动配置JDBC环境。当添加spring-boot-starter-jdbcspring-boot-starter-data-jpa依赖时,Spring Boot会自动在classpath中查找JDBC驱动器,并基于这些驱动器配置数据源和JdbcTemplate。

具体来说:

  1. 自动检测驱动器:Spring Boot会检测classpath中是否存在支持的数据库驱动器,如H2、MySQL、PostgreSQL等。
  2. 配置数据源:根据application.properties中的配置,创建并配置数据源(DataSource)实例,默认使用HikariCP作为连接池。
  3. 创建JdbcTemplate:Spring Boot会自动创建并配置JdbcTemplate bean,开发者可以直接注入使用。
1.2.2 数据源配置(如HikariCP)

HikariCP是Spring Boot默认使用的数据库连接池,因为它高效、轻量级,并且性能优异。以下是HikariCP的主要特点:

  • 高性能:HikariCP是目前Java领域最快的连接池之一。
  • 轻量级:占用内存小,启动快。
  • 自动调优:HikariCP能够自动调整连接池大小,以达到最佳性能。

application.properties中配置HikariCP的相关参数:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb  
spring.datasource.username=root  
spring.datasource.password=123456  
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  # HikariCP 配置  
spring.datasource.hikari.minimumIdle=5  
spring.datasource.hikari.maximumPoolSize=15  
spring.datasource.hikari.connectionTimeout=30000  
spring.datasource.hikari.idleTimeout=60000  
1.2.3 application.properties 配置详解

application.properties中,可以通过Spring Boot的属性来配置数据源和数据库连接:

  • 数据库连接URLspring.datasource.url
  • 数据库用户名spring.datasource.username
  • 数据库密码spring.datasource.password
  • JDBC驱动类名spring.datasource.driver-class-name
  • 数据源类型spring.datasource.type,默认为HikariDataSource,可以选择其他如Druid等。

自定义数据源

如果需要自定义数据源,可以在配置类中定义一个@Bean

@Configuration  
public class DatabaseConfig {  @Bean  public DataSource dataSource() {  return DataSourceBuilder.create()  .driverClassName("com.mysql.cj.jdbc.Driver")  .url("jdbc:mysql://localhost:3306/mydb")  .username("root")  .password("123456")  .build();  }  
}  

1.3 使用 JdbcTemplate

1.3.1 什么是 JdbcTemplate?

JdbcTemplate是Spring框架提供的一个JDBC模板类,旨在简化JDBC操作。它封装了底层的JDBC细节,提供了一系列方法来执行SQL操作,并自动处理资源的释放。通过使用JdbcTemplate,开发者可以专注于业务逻辑,而不必担心繁琐的JDBC资源管理。

1.3.2 CRUD 操作示例

以下是使用JdbcTemplate进行CRUD操作的示例:

  1. 插入数据(INSERT)
public void insertUser(User user) {  String sql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?)";  jdbcTemplate.update(sql, user.getUsername(), user.getEmail(), user.getPassword());  
}  
  1. 查询数据(SELECT)
public List<User> findAllUsers() {  String sql = "SELECT * FROM users";  return jdbcTemplate.query(sql, new UserRowMapper());  
}  class UserRowMapper implements RowMapper<User> {  @Override  public User mapRow(ResultSet rs, int rowNum) throws SQLException {  User user = new User();  user.setId(rs.getLong(</

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com