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作为默认值。
参考代码仓库里面的mysql模块,这里只贴出docker-compose.yml
version: '3'services:mysql:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7container_name: mysql_3306restart: unless-stoppedvolumes:- "./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 emptyenvironment: # set environment,equals docker run -eTZ: Asia/ShanghaiLANG: en_US.UTF-8MYSQL_ROOT_PASSWORD: root # set root passwordMYSQL_DATABASE: demo # init database nameports: # port mappping- "3306:3306"
运行
docker-compose -f docker-compose.yml -p mysql5.7 up -d
实验目标:使用hikari连接mysql数据库
<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>
server.port=8088spring.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.HikariDataSourcespring.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=truespring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy#use mysql databasespring.jpa.database=mysql# show sqlspring.jpa.show-sql=true
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;public class DemoApplication implements CommandLineRunner {DataSource dataSource;public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}public void run(String... args) throws Exception {System.out.println("DataSource = " + dataSource);}}
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;public class HelloWorldController {private UserRepository userRepository;public Map<String, Object> showHelloWorld(){Map<String, Object> map = new HashMap<>();map.put("msg", "HelloWorld");return map;}public User add(String name){User user = new User();user.setName(name);return userRepository.save(user);}public Iterable<User> list(){Iterable<User> all = userRepository.findAll();return all;}}
package com.et.hikari.repository;import com.et.hikari.entity.User;import org.springframework.data.repository.CrudRepository;public interface UserRepository extends CrudRepository<User, String> {}
package com.et.hikari.entity;import org.hibernate.annotations.GenericGenerator;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;public class User {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
测试启动springboot应用程序,控制台输出
DataSource = HikariDataSource (HikariPool-1)测试插入数据
http://127.0.0.1:8088/add?name=hblog
测试查询数据
http://127.0.0.1:8088/list
http://www.liuhaihua.cn/archives/710358.html
https://www.cnblogs.com/chaojizhengui/p/Hikari_.html
原文作者:HBLOG;如有侵权,请联系管理员删除。