Hikari java数据库连接池实战
环境InterlliJ2016.3 MySQL5.7.12
pom依赖:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.2</version>
</dependency>
配置文件db.properties
db_url = 192.168.199.132
db_port = 3306
db_name = mind
db_max_conn = 100
db_username = root
db_password = root
DBService.Java:
package com.mind.core.db.impl; 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; /**
* 数据库服务
* Created by Lovell on 16/6/18.
*/
public class DBService {
private static Logger logger = LoggerFactory.getLogger(DBService.class); private static final String DB_CONFIG_FILE = "/db.properties"; // 数据库连接数
private short db_max_conn = 0; // 数据库服务器addr
private String db_url = null; // 数据库连接端口
private short db_port = 0; // 数据库名称
private String db_name = null; // 数据库登录用户名
private String db_username = null; // 数据库登录密码
private String db_password = null; // 数据库连接
private Connection connection; private static DBService dBService;
public static DBService getInstance(){
if (dBService == null) {
dBService = new DBService();
}
return dBService;
} public void start() throws IOException, SQLException {
Properties properties = new Properties();
InputStream in = DBService.class.getClass().getResourceAsStream(DB_CONFIG_FILE);
properties.load(in); db_max_conn = Short.valueOf(properties.getProperty("db_max_conn"));
db_url = String.valueOf(properties.getProperty("db_url"));
db_port = Short.valueOf(properties.getProperty("db_port"));
db_name = String.valueOf(properties.getProperty("db_name"));
db_username = String.valueOf(properties.getProperty("db_username"));
db_password = String.valueOf(properties.getProperty("db_password")); if (db_url == null || db_url.length() == 0) {
logger.error("配置的数据库ip地址错误!");
System.exit(0);
} HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(db_max_conn);
config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
config.addDataSourceProperty("serverName", db_url);
config.addDataSourceProperty("port", db_port);
config.addDataSourceProperty("databaseName", db_name);
config.addDataSourceProperty("user", db_username);
config.addDataSourceProperty("password", db_password);
HikariDataSource dataSource = new HikariDataSource(config); // // 也可以这样写
// config.setDriverClassName("com.mysql.jdbc.Driver");
// config.setJdbcUrl("jdbc:mysql://"+ db_url +"/" + db_name + "?useUnicode=true&characterEncoding=utf8&useSSL=false");
// config.setUsername(db_username);
// config.setPassword(db_password);
// config.addDataSourceProperty("cachePrepStmts", "true");
// config.addDataSourceProperty("prepStmtCacheSize", "250");
// config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
// // 设置连接超时为8小时
// config.setConnectionTimeout(8 * 60 * 60);
// HikariDataSource dataSource = new HikariDataSource(config);
} public Connection getConnection() throws SQLException {
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
dataSource.resumePool();
return null;
} } public boolean stop() throws SQLException {
dataSource.close();
return true;
}
}
DBServiceTest.java
package com.mind.core.db.impl; import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* Created by Lovell on 16/6/25.
*/
public class DBServiceTest {
public static void main(String[] args) throws IOException, SQLException {
DBSservice.getInstance().start(); // statement用来执行SQL语句
Statement statement = DBService.getInstance().getConnection().createStatement(); // 要执行的SQL语句id和content是表review中的项。
String sql = "select * from login where name='Lovell' and password='123456'"; // 得到结果
ResultSet rs = statement.executeQuery(sql); if(rs.next()){
System.out.println("Logon"); }else{
System.out.println("Login Faild");
}
rs.close();
}
}
---------------------
参考资料:https://blog.csdn.net/langzi7758521/article/details/51766754
Hikari java数据库连接池实战的更多相关文章
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDB ...
- [转帖]为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用 原创Clement-Xu 发布于2015-07-17 15:53:14 阅读数 57066 收藏 展开 HiKariCP是 ...
- Java数据库连接池封装与用法
Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...
- Java数据库连接池
转载过来的,最近在做一个小网站,准备使用这种方法. Java jdbc数据库连接池总结! 1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及, ...
- 一个JAVA数据库连接池实现源码
原文链接:http://www.open-open.com/lib/view/open1410875608164.html // // 一个效果非常不错的JAVA数据库连接池. // from:htt ...
- Java数据库连接池的几种配置方法(以MySQL数据库为例)
Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...
- Java数据库连接池详解
http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 对于共享资源,有一个很著名的设计模式:资源池(Resource P ...
- 为什么HikariCP被号称为性能最好的Java数据库连接池,怎样配置使用
HiKariCP是数据库连接池的一个后起之秀.号称性能最好.能够完美地PK掉其它连接池. 原文地址:http://blog.csdn.net/clementad/article/details/469 ...
- 为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
转自:https://blog.csdn.net/clementad/article/details/46928621 HiKariCP是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他 ...
随机推荐
- Linux 就该这么学 CH04 VIM编辑器和Shell命令脚本
0 概述 1 Vim编辑器 在linux 中一切都是文件,而配置一个服务就是修改其配置文件的参数. vim 编辑器有三种模式:命令模式,末行模式和编辑模式. 命令模式:控制光标移动,对文件进行操作. ...
- Oracle中恢复drop掉的表中的数据
今天同事不小心把生产上的一张表直接drop掉了,没有做备份,哥们慌的一匹,来找我这个小白来帮忙解决,于是心血来潮简单总结一下. 其实在oralce中,用drop删掉一张表,其实不会真正的删除,只是把表 ...
- 在ensp中的acl控制
原理 实验模拟 实验拓扑 相关参数 我们在每一台路由器上设置ospf服务,使其互相能通 下面我们配置基本ACL控制访问 配置完成后,尝试在R1上建立telent连接 但是这样设置是不安全的,只要是直连 ...
- SQL"已更新或者删除的行值要么不能使该行成为唯一行,要么改变了多个行(X行)“解决办法
这种问题大多是由于没有主键(PK)导致同一张表中存在若干条相同的数据.DBMS存储时,只为其存储一条数据,因为DBMS底层做了优化,以减少数据冗余.所以删除或更新一条重复数据就牵一发而动全身. 解决方 ...
- 【转帖】全网最通俗易懂的Kafka入门
全网最通俗易懂的Kafka入门 http://www.itpub.net/2019/12/04/4597/ 前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://g ...
- k8s 运行应用
一.deployment 创建过程 kubect创建deployment —> deployment 创建ReplicaSet—>根据ReplicaSet 创建Pod 命名方式 relic ...
- WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因
原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding Walt ...
- sqlserver安装教程
1 安装步骤:http://jingyan.baidu.com/article/359911f573f71657fe030603.html 2 当提示装载第二张光盘时,在DAEMON Tools中把第 ...
- JS中的if语句内如何加or使多个条件通过
if(a==1&&b==2){ //do something }//条件是a等于1 并且 b等于2时才能成立,两个条件必须同时满足 if(a==1||b==2){ //do som ...
- NMS的实现代码详解
NMS代码说明(来自Fast-RCNN) 个人觉得NMS包含很多框,其坐标为(x1,y1,x2,y2),每个框对应了一个score,我们将按照score得分降序,并将第一个最高的score的框(我们叫 ...