HikariCP 个人实例
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 个人实例的更多相关文章
- Spring Boot 2 + MariaDB + HikariCP基础实例
在已有SpringBoot工程中基于MariaDB驱动使用HikariCP 连接池 环境:SpringBoot2.0.2 .MariaDB驱动版本2.2.3.HikariCP2.7.8 1.在Spri ...
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Spring Boot 数据库连接池 HikariCP
简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...
- 池化技术(二)HikariCP是如何管理数据库连接的?
基于依赖程序的版本信息:HikariCP:3.3.1 驱动程序mysql-connector-java:8.0.17 上一篇:Druid是如何管理数据库连接的 零.类图和流 ...
- HikariCP连接池及其在springboot中的配置
主要配置如下: 配置项 描述 构造器默认值 默认配置validate之后的值 validate重置 autoCommit 自动提交从池中返回的连接 true true - connectionTime ...
- 性能超过DRUID的最强数据库连接池——HikariCP相关配置及简单示例
在配置application.yml时,对hikari的配置会有这样一个字段validationQuery. validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一 ...
- 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...
- Java 数据持久化系列之 HikariCP (一)
在上一篇<Java 数据持久化系列之池化技术>中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP.Druid 等 ...
- js-静态、原型、实例属性
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...
随机推荐
- springboot 控制台程序读取配置文件(原创)
首先新建一个springboot项目,此处省略. 1.新建一个application.properties person.name=kevin person.age=6 person.sex=male ...
- 修改mysql max_allowed_packet 配置
1:当前默认配置 mysql> show VARIABLES like '%max_allowed_packet%';+--------------------------+---------- ...
- (转)IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
背景:idea安装插件,学习使用阿里巴巴开发插件. 在线和离线的安装方式. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines) ...
- ThreadLocal源代码1
public class ThreadLocalTrxt { static ThreadLocal<Object> x1 = new ThreadLocal<Object>() ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
- 后端&前端零碎知识点和注意问题
后端 1. Spring自带的MD5加密工具类 import org.springframework.util.DigestUtils; String md5Password = DigestUtil ...
- day21——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版
day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对 ...
- Python之路【第二十二篇】:轮播图片CSS
轮播代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- [cf 1245 F] Daniel and Spring Cleaning
题意: 求区间$[l,r]$内有多少有序数对$(a,b)$满足$a+b=a\bigoplus b$. $l,r\leq 10^9$. 题解: 有用的就一句话: 求区间内一元组可以一维容斥,同理求二元组 ...
- SVN客户端教程
.SVN是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问 ...