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. sourceTree安装和使用(windows)

    SourceTree的简介   SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subve ...

  2. QQ自动强制加好友代码html

    鲜为人知的QQ自动强制加好友代码 是的,你也许见过强行聊天的代码: tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com& ...

  3. Linux下 Nginx安装与配置(Centos7)

    1:下载解压 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx-1.14.0.tar.gz cd ng ...

  4. netcore 步骤

    1.创建工程目录 d:\project 2.进入目录,创建解决方案 dotnet new sln 3.确定开发版本 dotnet --list-sdks //列出sdk版本 dotnet new gl ...

  5. UV数据与风速风向数据转换

    package com.qr.util; import java.text.DecimalFormat; /** * //TODO UV数据与风速风向数据转换 */ public class UVAn ...

  6. golang之defer

    概述 对于资源释放,有很多不同的实现方式,不同语言也有不同的惯用方法. C语言 :手动管理 Golang :defer Python :上下文管理器contexManager C++ : 作用域和析构 ...

  7. 【实战经验】Xilinx时钟从普通IO输出问题

    Xilinx芯片的时钟信号从普通IO输出时,在map过程中会出错,对此有两种解决方案: 1.在ucf文件中,添加对应的约束文件: 例如[PIN "U0_1/clkout2_buf.O&quo ...

  8. AJAX调用数据,滚动到底部

    最近一个小项目里面,需要使用AJAX去拉取数据,并且直接显示最后一条信息,也就是滚动到底部.实现脚本如下: var scrollHeight = $('.txtBox3').prop("sc ...

  9. LOJ2461 完美的队列 分块

    传送门 如果对于每一个操作\(i\)找到这个操作中所有的数都被pop掉的时间\(ed_i\),那么剩下就直接差分覆盖一下就可以了. 那么考虑如何求出\(ed_i\).发现似乎并没有什么数据结构能够维护 ...

  10. 【leetcode-97 动态规划】 交错字符串

    (1过,调试很久) 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 1: 输入: s1 = "aabcc", s2 = " ...