pom依赖

        <!--HikariCP数据库连接池-->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.2</version>
</dependency>

配置文件

spring.mysql.devcenter.datasource.url=jdbc:mysql://XXX.XX.XX.XX:XXXX/XXXXXXXXXXXX?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.mysql.devcenter.datasource.username=XXXXXX
spring.mysql.devcenter.datasource.password=XXXXXX
spring.mysql.devcenter.datasource.driverClassName=com.mysql.jdbc.Driver

java实现

package com.hikbigscreen.common;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties; public class HikariPoolManager { private static Logger logger = LoggerFactory.getLogger(HikariPoolManager.class); private static final String DB_CONFIG_FILE = "/application-jdbc.properties"; // 数据库服务器addr
private static String db_url = null;
// 数据库登录用户名
private static String db_username = null;
// 数据库登录密码
private static String db_password = null;
// 数据库驱动
private static String driverClassName = null;
// 数据库连接数
private static short db_max_conn = 0;
// 数据库连接端口
private static short db_port = 0;
// 数据库名称
private static String db_name = null; private static HikariDataSource dataSource;
private static HikariPoolManager hikariPoolManager; /**
* 单例模式
*
* @return
*/
public static HikariPoolManager getInstance() {
if (hikariPoolManager == null) hikariPoolManager = new HikariPoolManager();
return hikariPoolManager;
} /**
* 启动
*
* @throws IOException
* @throws SQLException
*/
public static void start() throws IOException, SQLException {
logger.info("连接池初始化Start!!!");
Properties properties = new Properties();
InputStream in = HikariPoolManager.class.getClass().getResourceAsStream(DB_CONFIG_FILE);
properties.load(in); db_url = String.valueOf(properties.getProperty("spring.mysql.devcenter.datasource.url"));
db_username = String.valueOf(properties.getProperty("spring.mysql.devcenter.datasource.username"));
db_password = String.valueOf(properties.getProperty("spring.mysql.devcenter.datasource.password"));
driverClassName = String.valueOf(properties.getProperty("spring.mysql.devcenter.datasource.driverClassName")); if (db_url == null || db_url.length() == 0) {
logger.error("配置的数据库ip地址错误!");
System.exit(0);
} HikariConfig config = new HikariConfig();
config.setJdbcUrl(db_url);
config.setUsername(db_username);
config.setPassword(db_password);
config.setDriverClassName(driverClassName);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
// 设置连接超时为8小时
config.setConnectionTimeout(8 * 60 * 60);
dataSource = new HikariDataSource(config); logger.info("连接池初始化End!!!");
} /**
* 打开连接
*
* @return
* @throws SQLException
*/
public synchronized static Connection getConnection() throws SQLException {
try {
return dataSource.getConnection();
} catch (SQLException e) {
logger.error("error:" + e.getMessage());
dataSource.close();
return null;
}
} /**
* 关闭连接
*
* @return
* @throws SQLException
*/
public boolean stop() throws SQLException {
dataSource.close();
return true;
}
}
package com.hikbigscreen.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* 公共工具Component
*
* @author AdiandianquanquanA
*/
@Component
public class CommonComponent { protected Logger logger = LoggerFactory.getLogger(this.getClass()); /**
* key位填类型,value位填传参的值
*
* @param sql
* @param param
* @return
*/
// 获取JDBC的数据,并返回list数据,每条信息放在Map中
public List<Map<String, Object>> getJdbcData(String sql, Object[] param) {
Connection conn = null;
PreparedStatement pstmt = null;
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
conn = HikariPoolManager.getConnection();
pstmt = conn.prepareStatement(sql);
if (param != null) {
if (param.length > 0) {
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]);
}
}
}
ResultSet rs = pstmt.executeQuery();
// 获取列信息
ResultSetMetaData columns = rs.getMetaData();
// 列数量
int columnNum = columns.getColumnCount();
while (rs.next()) {
Map<String, Object> resultMap = new HashMap<String, Object>();
// 将结果返回成Map,key为列表名,value为该字段的值
for (int j = 1; j <= columnNum; j++) {
resultMap.put(columns.getColumnName(j), rs.getString(j));
}
list.add(resultMap);
}
return list;
} catch (Exception e) {
logger.error("sql: " + sql);
logger.error("Exception: " + e.getMessage(), e);
return list;
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
logger.error("sql: " + sql);
logger.error("SQLException: " + e.getMessage(), e);
}
}
} }
package com.hikbigscreen;

import com.hzcominfo.hik.hikbigscreen.common.HikariPoolManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration;
import org.springframework.boot.web.support.SpringBootServletInitializer; import java.io.IOException;
import java.sql.SQLException; @SpringBootApplication(exclude = {SolrAutoConfiguration.class})
public class Application extends SpringBootServletInitializer { public static void main(String[] args) throws IOException, SQLException {
SpringApplication app = new SpringApplication(Application.class);
app.setWebEnvironment(true);
HikariPoolManager.start();
app.run(args); }
}

HikariCP 个人实例的更多相关文章

  1. Spring Boot 2 + MariaDB + HikariCP基础实例

    在已有SpringBoot工程中基于MariaDB驱动使用HikariCP 连接池 环境:SpringBoot2.0.2 .MariaDB驱动版本2.2.3.HikariCP2.7.8 1.在Spri ...

  2. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  3. Spring Boot 数据库连接池 HikariCP

    简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...

  4. 池化技术(二)HikariCP是如何管理数据库连接的?

    基于依赖程序的版本信息:HikariCP:3.3.1               驱动程序mysql-connector-java:8.0.17 上一篇:Druid是如何管理数据库连接的 零.类图和流 ...

  5. HikariCP连接池及其在springboot中的配置

    主要配置如下: 配置项 描述 构造器默认值 默认配置validate之后的值 validate重置 autoCommit 自动提交从池中返回的连接 true true - connectionTime ...

  6. 性能超过DRUID的最强数据库连接池——HikariCP相关配置及简单示例

    在配置application.yml时,对hikari的配置会有这样一个字段validationQuery. validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一 ...

  7. 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

  8. Java 数据持久化系列之 HikariCP (一)

    在上一篇<Java 数据持久化系列之池化技术>中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP.Druid 等 ...

  9. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

随机推荐

  1. Centos7——无法访问Windows系统的分区

    我的Windows分区是Ntfs格式的,所以我直接安装ntfs即可解决年 yum -y install ntfs*

  2. 使用vue搭建应用一入门

    1.准备 安装nodejs,配置环境变量 安装了nodejs,也就安装了npm 安装webpack npm install webpack -g 安装vue脚手架项目初始化工具 vue-cli npm ...

  3. Kubernetes集群

    Kubernetes已经成为当下最火热的一门技术,未来一定也会有更好的发展,围绕着云原生的周边产物也越来越多,使得上云更加便利更加有意义,本文主要讲解一些蔚来汽车从传统应用落地到Kubernetes集 ...

  4. python:求整数的二进制表示

    求解方法: 1.整数求余 2.重复进行,整数除2再求余,直到除数为0 3.拼接余数 4.反转字符串 def int2two(intNo): twoStr='' if intNo == 0: twoSt ...

  5. GitLabCICD

    CI/CD是什么 CI全名Continuous Integration,啥意思?就是我们经常听到的持续集成概念.当开发每天会提交多次代码到主干上,会做一些重复性的动作时,就可以用持续集成环境来操作.有 ...

  6. 【2】【典型一维动态规划】【剑指offer+leetcode53】连续子数组的最大和

    HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数 ...

  7. eclipse不提示问题

    按照上面截图输入26个字母大小写,即可.

  8. texlive2019安装

    TeX Live 是 TUG (TeX User Group) 发布并维护的的 TeX 系统,可以称得上是TeX的官方系统,官网为:https://www.tug.org/texlive/ 1.通过最 ...

  9. java之hibernate之hibernate查询

    这篇主要简单间接 hibernate查询 1.数据库操作中最重要的是查询,Hibernate提供了多种查询方式来帮助程序员快速实现查询功能. 有hql,本地sql查询,Criteria查询,examp ...

  10. python中字符串的常用(部分)处理方法

    myStr = "hello world itcast and hahaitcastcpp" 方法的查询方法: help(myStr.replace) myStr.find(&qu ...