SpringBoot HikariCP连接池详解

SpringBoot HikariCP连接池详解

本文介绍如何使用SpringBoot和HikariCP来管理MySQL数据库连接池。

什么是HikariCP?

HikariCP是一个高效的、快速的、轻量级的JDBC连接池,取名自日本的“光之屋”。与其他连接池相比,它有更快的启动时间、更小的内存占用以及更高的性能。

SpringBoot集成HikariCP

  1. 首先,需要在pom.xml中添加相关依赖
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>
  1. 在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操作数据库

  1. 在pom.xml中添加以下依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  1. 创建一个JdbcTemplate实例
@Autowired
DataSource dataSource;

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  1. 使用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操作数据库

  1. 在pom.xml中添加以下依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  1. 创建一个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
}
  1. 创建一个UserRepository接口,并继承于JpaRepository
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
}
  1. 使用UserRepository来操作数据库
@Autowired
UserRepository userRepository;

User user = new User();
user.setName("张三");
user.setAge(20);

userRepository.save(user);

List<User> userList = userRepository.findAll();

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot HikariCP连接池详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java编程SpringSecurity入门原理及应用简介

    Java编程Spring Security入门原理及应用简介攻略 Spring Security是一款基于Spring框架的安全框架,它为我们的Java应用程序提供了一种全面的安全解决方案。 本篇攻略将一步步地介绍Spring Security的入门原理,以及如何在Java编程中应用Spring Security。 Spring Security的入门原理 …

    Java 2023年5月20日
    00
  • spring-boot-maven-plugin引入出现爆红(已解决)

    我来给你详细讲解一下关于”spring-boot-maven-plugin引入出现爆红(已解决)”的攻略。 首先,问题的背景是在使用Maven构建项目的过程中,引入了spring-boot-maven-plugin这个插件,但是在IDEA中却出现了红色波浪线的错误提示,这是为什么呢? 原因是因为IDEA默认只加载了一部分的Maven插件,而spring-bo…

    Java 2023年5月20日
    00
  • 详解Java中static关键字和内部类的使用

    详解Java中static关键字和内部类的使用 Java中的static关键字和内部类是程序设计中非常重要的特性,本文将全面讲解它们的使用。 static关键字 概念 static关键字可以用来修饰类的成员变量和成员方法。 当static关键字被修饰成员变量时,该变量成为静态变量,也可以称为类变量。静态变量的特点是在内存中只有一份,无论有多少个对象被创建,静…

    Java 2023年5月26日
    00
  • 详解Java的面向对象和面向过程

    详解Java的面向对象和面向过程 Java是一门面向对象的编程语言,这意味着它支持对象化编程,而面向过程编程则是一种以过程为中心的编程方式。本文将从概念、特征、优缺点、适用场景和示例等方面详细讲解Java的面向对象和面向过程的区别与联系。 面向对象编程 概念 面向对象编程是一种以对象为中心的编程范式,强调“对象”的概念和特征,如:封装、继承、多态等。通过使用…

    Java 2023年5月23日
    00
  • java 中数据库连接的JDBC和驱动程序的深入分析

    那我来为您详细讲解Java中数据库连接的JDBC和驱动程序的深入分析。 JDBC简介 Java Database Connectivity (JDBC) 是一种Java API,用于与数据库进行连接、传输数据和操作数据。在Java应用程序中,可以使用JDBC API与各种关系型数据库进行交互,如MySQL、PostgreSQL、Oracle等。 JDBC驱动…

    Java 2023年5月19日
    00
  • vs怎么编写java Script项目? VisualStudio创建java Script文件的技巧

    下面是关于如何在 Visual Studio 中编写 JavaScript 项目的攻略。 Visual Studio 创建 JavaScript 项目 首先,打开 Visual Studio,选择“创建新项目”(New Project),然后在弹出的“新建项目”对话框中,选择“JavaScript”类别,然后选择“空白 Node.js Web 应用程序”模板…

    Java 2023年5月26日
    00
  • 21基于java的旅游信息管理系统

    项目背景 根据旅游行业的这种现状,提出解决问题的一个可行性方法,实现了旅游管理的网络化。 项目总体介绍 旅游系统设计分为前后网站和后台管理系统,功能点包含旅游景点信息分类展示、景点详情(地理位置、特色景点概述等)、下单预订等功能;角色分为管理员和普通用户。用户可以对旅游线路及其详细信息进行查询、预定旅游线路等。详细如下: 用户注册,登录 查看和预订旅游路线 …

    Java 2023年5月5日
    00
  • Spring AOP统一功能处理示例代码

    下面是关于“Spring AOP统一功能处理示例代码”的完整攻略: 1. 概述 AOP(Aspect Oriented Programming)是面向切面编程的缩写。它是一种新的编程思想,广泛应用于业务逻辑与系统设计中,目的是提高系统的可维护性、可扩展性和可复用性。Spring AOP是Spring框架中的一个模块,基于动态代理技术,实现了程序的非侵入式管理…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部