微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

  • 在配置application.yml时,对hikari的配置会有这样一个字段validationQuery。
  • validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句。
DataBase validationQuery
hsqldb select 1 from @R_213_4045@ION_SCHEMA.SYstem_USERS
Oracle select 1 from dual
DB2 select 1 from sysibm.sysdummy1
MysqL select 1
Microsoft sqlServer select1
postgresql select version()
ingres select 1
derby values 1
H2 gi select 1

使用实例

核心依赖

<!-- 数据库驱动 -->
 <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.g.6</version>
        </dependency>

<!-- 连接池 -->
        <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.4.7</version>
        </dependency>

核心配置hikari.properties

# 这里的配置仅适用于Orcale数据库,其他数据库参照官方说明
# 设置数据库驱动
dataSourceClassName=oracle.jdbc.pool.OracleDataSource
# 设置数据库用户名
dataSource.user=user_test
# 设置用户密码
dataSource.password=user_test
# 设置数据库名
dataSource.databaseName=test
# 设置数据库端口
dataSource.portNumber=1521
# 设置数据库地址
dataSource.serverName=192.168.1.11
# 设置驱动形式
dataSource.driverType=thin

常用数据库对应的dataSourceClassName

Database Driver DataSource class
Apache Derby Derby org.apache.derby.jdbc.ClientDataSource
Firebird Jaybird org.firebirdsql.ds.FBSimpleDataSource
H2 H2 org.h2.jdbcx.JdbcDataSource
HsqlDB HsqlDB org.hsqldb.jdbc.JDBCDataSource
IBM DB2 IBM JCC com.ibm.db2.jcc.DB2SimpleDataSource
IBM Informix IBM Informix com.informix.jdbcx.IfxDataSource
MS sql Server Microsoft com.microsoft.sqlserver.jdbc.sqlServerDataSource
MysqL Connector/J com.MysqL.jdbc.jdbc2.optional.MysqLDataSource
MariaDB MariaDB org.mariadb.jdbc.MariaDbDataSource
Oracle Oracle oracle.jdbc.pool.OracleDataSource
OrientDB OrientDB com.orientechnologies.orient.jdbc.OrientDataSource
Postgresql pgjdbc-ng com.impossibl.postgres.jdbc.PGDataSource
Postgresql Postgresql org.postgresql.ds.PGSimpleDataSource
SAP MaxDB SAP com.sap.dbtech.jdbc.DriverSapDB
sqlite xerial org.sqlite.sqliteDataSource
SyBase jConnect com.sybase.jdbc4.jdbc.SybDataSource

获取数据库连接

package lss.medicare.ydjy.webservice.kswebservice.data_source;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.activation.DataSource;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.sqlException;

/**
 * @ClassName HikariDataSourceConnection
 * @Description Todo
 * @Author syskey
 * @Date 2019/4/22 9:26
 * @Version 1.0
 **/
public class HikariConnection {
    private final static Logger log = LogManager.getLogger(HikariConnection.class);
    private static HikariDataSource dataSource;
    private static Connection connection;

    static {
        HikariConfig config = new HikariConfig("/hikari.properties");
        dataSource = new HikariDataSource(config);
    }

    public static Connection getInstance() {
        try {
            if (connection == null) {
                connection = dataSource.getConnection();
            }
        } catch (sqlException e) {
            e.printstacktrace();
            log.error("获取数据源连接失败:" + e);
        }
        return connection;
    }


    public static void main(String[] args) {
        final String sql = "select * from test ";
        try {
            Connection connection = getInstance();
            PreparedStatement ps = connection.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                log.info(rs.getString(1));
            }
        } catch (sqlException e) {
            e.printstacktrace();
            log.error("获取数据库连接失败!");
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐