zoukankan      html  css  js  c++  java
  • 性能超过DRUID的最强数据库连接池——HikariCP相关配置及简单示例

    • 在配置application.yml时,对hikari的配置会有这样一个字段validationQuery。
    • validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句。
    DataBase validationQuery
    hsqldb select 1 from INFORMATION_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("获取数据库连接失败!");
            }
        }
    }
    
    
  • 相关阅读:
    Mtk Ft6306 touch 驱动 .
    第一屏不显示懒加载的图片内容,这个方法可以搞定
    C#多线程中访问winform控件 (解决Winform 对象当前正在其他地方使用)
    变化的科技感十足的网站,推荐
    新年有感
    获取高精度时间注意事项 (QueryPerformanceCounter , QueryPerformanceFrequency)
    修改 TeamViewer ID 的方法
    VS2017离线安装包[百度云盘](收藏了)
    老子今天不加班,程序员也需要自由
    改变Eclipse 中代码字体大小
  • 原文地址:https://www.cnblogs.com/caoleiCoding/p/11140701.html
Copyright © 2011-2022 走看看