下面是我对这个主题的完整攻略:
一、简介
在介绍 Spring Boot 对 JDBC 支持的同时,我们需要先了解 JDBC 是什么。JDBC (Java DataBase Connectivity) 是 Java 语言中操作关系型数据库的 API。Spring Boot 建立在 Spring 框架的基础之上,因此 Spring Boot 是通过 Spring 对 JDBC 进行支持。
二、Spring Boot 对 JDBC 的支持
Spring Boot 可以通过配置文件的方式来管理数据库的连接。在 Spring Boot 中,我们可以使用 spring.datasource.*
前缀的属性配置数据库连接信息,具体属性包含:url、username、password、driver、initialization-mode 等等。
下面是一个简单的示例:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
可以看到,我们使用了 YAML 格式的配置文件,并在 spring.datasource
下配置了数据库的连接信息。其中,url
属性指定了要连接的数据库的 URL,username
属性指定了数据库连接的用户名,password
属性指定了数据库连接的口令,driver-class-name
属性指定了 JDBC 驱动程序的完整类名。
通过以上配置,Spring Boot 就可以根据配置文件中的信息来自动创建 datasource 实例,并将其注入到我们的应用程序中。
三、JDBC 支持示例
为了更好地说明 Spring Boot 对 JDBC 的支持,下面我们来看两个 JDBC 支持的示例:
1. 实现 CRUD 操作
首先,我们需要定义一个数据库实体类 User,如下所示:
@Data
public class User {
private Long id;
private String name;
private Integer age;
}
然后,我们要创建一个 UserDao 接口,来实现 CRUD 操作:
public interface UserDao {
// 查询用户
User findById(Long id);
List<User> findAll();
// 新增用户
void save(User user);
// 更新用户
void update(User user);
// 删除用户
void delete(Long id);
}
接下来,我们可以使用 Spring Boot 对 JDBC 的支持,通过注入 JdbcTemplate
来操作数据库:
@Repository
public class JdbcUserDaoImpl implements UserDao {
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcUserDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public User findById(Long id) {
String sql = "SELECT id, name, age FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class));
}
@Override
public List<User> findAll() {
String sql = "SELECT id, name, age FROM users";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
@Override
public void save(User user) {
String sql = "INSERT INTO users(name, age) VALUES(?, ?)";
jdbcTemplate.update(sql, user.getName(), user.getAge());
}
@Override
public void update(User user) {
String sql = "UPDATE users SET name = ?, age = ? WHERE id = ?";
jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
}
@Override
public void delete(Long id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
}
现在,我们已经可以通过注入 JdbcUserDaoImpl
来实现对数据库用户表的增删改查操作。
2. 使用事务管理
在进行数据库操作时,我们经常会考虑事务管理。Spring Boot 也对事务进行了支持,使我们可以更加方便地操作数据库。
先定义一个 Account 实体类,如下所示:
@Data
public class Account {
private Long id;
private String name;
private Double balance;
}
然后,我们需要编写一个 AccountDao 接口,来实现业务逻辑中所需要的数据库操作:
public interface AccountDao {
Double findBalanceById(Long id);
void updateBalanceById(Long id, Double amount);
}
接下来,我们可以编写一个 AccountService 来调用上面的 AccountDao 接口,并使用 spring 的事务管理来控制这些事务:
@Service
@Transactional
public class AccountService {
private final AccountDao accountDao;
@Autowired
public AccountService(AccountDao accountDao) {
this.accountDao = accountDao;
}
public void transfer(Long fromAccountId, Long toAccountId, Double amount) {
Double fromBalance = accountDao.findBalanceById(fromAccountId);
Double toBalance = accountDao.findBalanceById(toAccountId);
try {
Thread.sleep(500);//模拟业务场景
} catch (InterruptedException e) {
e.printStackTrace();
}
fromBalance -= amount;
accountDao.updateBalanceById(fromAccountId, fromBalance);
toBalance += amount;
accountDao.updateBalanceById(toAccountId, toBalance);
}
}
现在,我们已经可以通过注入 AccountService 来实现对数据库账户表的转账操作,并使用 Spring 的事务管理进行管理了。
以上就是 Spring Boot 对 JDBC 支持的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇超详细的Spring Boot对jdbc支持的文章 - Python技术站