ITPub博客

首页 > 数据库 > 数据库开发技术 > Spring Boot集成hikari快速入门demo

Spring Boot集成hikari快速入门demo

原创 数据库开发技术 作者:hblog 时间:2024-03-27 11:31:00 0 删除 编辑

1.hikari介绍

Hikari是快速,简单,可靠和生产就绪的JDBC连接池。在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat Pool切换到Hikari。这是因为Hikari提供了卓越的性能。现在自Spring Boot 2.0发布以来,spring-boot-starter-jdbc和spring-boot-starter-data-jpa默认解析Hikari依赖, spring.datasource.type属性将HikariDataSource作为默认值。 

2.mysql环境搭建

参考代码仓库里面的mysql模块,这里只贴出docker-compose.yml

version: '3'services:  mysql:    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7    container_name: mysql_3306    restart: unless-stopped                                       volumes:      - "./mysql/my.cnf:/etc/mysql/my.cnf"      - "./mysql/init-file.sql:/etc/mysql/init-file.sql"      - "./mysql/data:/var/lib/mysql"#      - "./mysql/conf.d:/etc/mysql/conf.d"      - "./mysql/log/mysql/error.log:/var/log/mysql/error.log"      - "./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d" # init sql script directory -- tips: it can be excute  when `/var/lib/mysql` is empty    environment:                        # set environment,equals docker run -e      TZ: Asia/Shanghai      LANG: en_US.UTF-8      MYSQL_ROOT_PASSWORD: root         # set root password      MYSQL_DATABASE: demo              # init database name    ports:                              # port mappping      - "3306:3306"

运行

docker-compose -f docker-compose.yml -p mysql5.7 up -d

3.代码工程

实验目标:使用hikari连接mysql数据库

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>springboot-demo</artifactId>        <groupId>com.et</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>
<artifactId>hikari</artifactId>
<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--jpa--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
</dependencies></project>

application.properties

server.port=8088
spring.datasource.url=jdbc:mysql://localhost:3306/demospring.datasource.username=rootspring.datasource.password=root
#Spring Boot 2.0 includes HikariDataSource by default#spring.datasource.type = com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.connection-timeout=20000spring.datasource.hikari.minimum-idle=5spring.datasource.hikari.maximum-pool-size=12spring.datasource.hikari.idle-timeout=300000spring.datasource.hikari.max-lifetime=1200000spring.datasource.hikari.auto-commit=true
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy#use mysql databasespring.jpa.database=mysql# show sqlspring.jpa.show-sql=true

DemoApplication.java

package com.et.hikari;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.sql.DataSource;
@SpringBootApplicationpublic class DemoApplication implements CommandLineRunner { @Autowired DataSource dataSource;
public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println("DataSource = " + dataSource); }}

controller

package com.et.hikari.controller;
import com.et.hikari.entity.User;import com.et.hikari.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;import java.util.Map;
@RestControllerpublic class HelloWorldController { @Autowired private UserRepository userRepository; @RequestMapping("/hello") @ResponseBody public Map<String, Object> showHelloWorld(){ Map<String, Object> map = new HashMap<>(); map.put("msg", "HelloWorld"); return map; }

@RequestMapping("/add") public User add(String name){ User user = new User(); user.setName(name); return userRepository.save(user); }
@RequestMapping("/list") public Iterable<User> list(){ Iterable<User> all = userRepository.findAll(); return all; }}

repository

package com.et.hikari.repository;

import com.et.hikari.entity.User;import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, String> {
}

entity

package com.et.hikari.entity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;

@Entitypublic class User {
@Id @GenericGenerator(name = "system-uuid", strategy = "uuid") @GeneratedValue(generator = "system-uuid") private String id; private String name; private Integer age; private Boolean sex;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
public Boolean getSex() { return sex; }
public void setSex(Boolean sex) { this.sex = sex; }}

代码仓库

  • https://github.com/Harries/springboot-demo

4.测试

  • 测试启动springboot应用程序,控制台输出

DataSource = HikariDataSource (HikariPool-1)
  • 测试插入数据

http://127.0.0.1:8088/add?name=hblog

  • 测试查询数据

http://127.0.0.1:8088/list

5.引用

  • http://www.liuhaihua.cn/archives/710358.html

  • https://www.cnblogs.com/chaojizhengui/p/Hikari_.html

原文作者:HBLOG;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-05-04

  • 博文量
    210
  • 访问量
    111753