SpringBoot HikariCP连接池详解
本文介绍如何使用SpringBoot和HikariCP来管理MySQL数据库连接池。
什么是HikariCP?
HikariCP是一个高效的、快速的、轻量级的JDBC连接池,取名自日本的“光之屋”。与其他连接池相比,它有更快的启动时间、更小的内存占用以及更高的性能。
SpringBoot集成HikariCP
- 首先,需要在pom.xml中添加相关依赖
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
- 在application.properties文件中添加配置信息
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# HikariCP配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.minimum-idle=2
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.auto-commit=true
- spring.datasource.url:数据库地址
- spring.datasource.username:数据库用户名
- spring.datasource.password:数据库密码
- spring.datasource.driver-class-name:数据库驱动名称
- spring.datasource.type:使用的数据源类型
- spring.datasource.hikari.connection-test-query:用于测试连接的SQL语句
- spring.datasource.hikari.minimum-idle:最小空闲连接数
- spring.datasource.hikari.maximum-pool-size:连接池最大连接数
- spring.datasource.hikari.auto-commit:是否自动提交事务
示例一:使用JdbcTemplate操作数据库
- 在pom.xml中添加以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 创建一个JdbcTemplate实例
@Autowired
DataSource dataSource;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
- 使用JdbcTemplate来操作数据库
public void addUser(User user) {
String sql = "INSERT INTO user (name, age) VALUES (?, ?)";
Object[] params = new Object[]{user.getName(), user.getAge()};
jdbcTemplate.update(sql, params);
}
public void deleteUserById(int id) {
String sql = "DELETE FROM user WHERE id = ?";
Object[] params = new Object[]{id};
jdbcTemplate.update(sql, params);
}
public void updateUser(User user) {
String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";
Object[] params = new Object[]{user.getName(), user.getAge(), user.getId()};
jdbcTemplate.update(sql, params);
}
public User getUserById(int id) {
String sql = "SELECT * FROM user WHERE id = ?";
Object[] params = new Object[]{id};
return jdbcTemplate.queryForObject(sql, params, new BeanPropertyRowMapper<>(User.class));
}
public List<User> getAllUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
示例二:使用Spring Data JPA操作数据库
- 在pom.xml中添加以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
- 创建一个User实体类并添加JPA注解
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private Integer age;
// getter and setter
}
- 创建一个UserRepository接口,并继承于JpaRepository
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
}
- 使用UserRepository来操作数据库
@Autowired
UserRepository userRepository;
User user = new User();
user.setName("张三");
user.setAge(20);
userRepository.save(user);
List<User> userList = userRepository.findAll();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot HikariCP连接池详解 - Python技术站