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. win7安装 nodejs,npm

    1. 下载地址:http://nodejs.org/dist/v9.7.1/ 2. 安装 3. 查看是否安装成功,命令行查询 node  -v 4. 默认已经安装了npm,直接查询版本 5. 配置np ...

  2. C#.NET LoadXml 时 “根级别上的数据无效。 行 1,位置 1”

    去除XML HEADER: <?xml version="1.0" encoding="utf-8"?> if (rspBusiXml.Contai ...

  3. WPS应用技巧

    打开云文档的文件:文件-打开-我的云文档 (选择时的文档为PDF时仅扫描PDF文件)

  4. tp中model加载机制

    $user_model = D('User'); 如果当前模块下面有UserModel,就优先使用当前模块下的UserModel.如果当前模块下没有UserModel,就回去Common模块下找Use ...

  5. [转帖]Masscan教程和入门手册

    Masscan教程和入门手册 https://www.4hou.com/tools/8251.html 愣娃 安全工具 2017年11月1日发布 收藏 导语:masscan是为了尽可能快地扫描整个互联 ...

  6. RDA的使用和说明

    一.RDA 说明 RDA(RemoteDiagnostic Agent)是oracle用来收集.分析数据库的工具,运行该工具不会改变系统的任何参数,RDA收集的相关数据非常全面,可以简化我们日常监控. ...

  7. springboot异步线程(二)

    前言 本篇文章针对上篇文章springboot异步线程,有一位大佬在评论中提出第一点是错误的,当时看到了这个问题,最近刚好有空,针对第一点的问题去搜索了不少的文章: 问题 我在文章中第一点去验证:Sc ...

  8. vscode 前端常用插件推荐

    1.  vscode 简介vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器.当前市面上常用的轻型代码编辑器主要是:sublime,n ...

  9. GreenPlum 最佳实践

    数据模型 Greenplum数据库是一种shared nothing的分析型MPP数据库.这种模型与高度规范化的/事务型的SMP数据库有显著区别.Greenplum数据库使用非规范化的模式设计会工作得 ...

  10. Linux生产环境上,最常用的一套“Sed“技巧

    sed命令应用广泛,使用简单,是快速文本处理的利器.它其实没多少技巧,背诵.使用是最合适的学习渠道,属于硬技能.但它又很复杂,因为高级功能太多.本篇不去关注sed的高级功能,仅对常用的一些操作,进行说 ...