HikariCP 简单使用


HikariCP
号称性能最好的JDBC连接池
其Github地址是:https://github.com/brettwooldridge/HikariCP
我们来看如何使用 HikariCP来访问 MySQL 数据库
使用 HikariCP 访问 MySQL
新建一个 Maven 项目,并引入所需的依赖:
<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.1.0</version><!--$NO-MVN-MAN-VER$--> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple 这个是为了实现slf4j的 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency>
注意:mysql-connector-java 的版本不要过高,否则可能会出现
java.sql.SQLException: No suitable
ERROR com.zaxxer.hikari.HikariConfig - Failed to load driver class
问题。
我们引入了三个依赖:
HikariCP JDBC连接池
slf4j-simple 日志库
mysql-connector-java mysql的连接驱动
简单的新增
我们在main函数中先执行一个简单的新增。
private static HikariDataSource getDataSource() throws SQLException { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/javablog?useUnicode=true&characterEncoding=utf8&useSSL=false"); config.setUsername("root"); config.setPassword("123456"); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); return new HikariDataSource(config); } /* 简单的新增 */ public static int Add_Demo() { int result = -1; try { HikariDataSource dataSource = getDataSource(); Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement(); statement.execute("insert user values(NULL,'9','9',1);", Statement.RETURN_GENERATED_KEYS); ResultSet resultSet = statement.getGeneratedKeys(); if (resultSet != null) { if (resultSet.next()) { result = resultSet.getInt(1); } } if (connection != null && !connection.isClosed()) connection.close(); if (dataSource != null && !dataSource.isClosed()) dataSource.close(); } catch (Exception e) { e.printStackTrace(); } return result; }
首先是新建一个 HikariConfig 的配置类,根据此配置类生成一个 HikariDataSource 数据源,由 数据源 来生成一个 连接 Connection。
Connection 再创建一个 Statement,由 Statement 来执行的 sql 语句。这个新增同时还返回了新增后的主键值,方法是通过 getGeneratedKeys 方法。
简单的更新
/* 更新 */ public static int update_dmeo() { int result = -1; try { HikariDataSource dataSource = getDataSource(); Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement(); result = statement.executeUpdate("update user set username = 'changed' where userid = 4"); if (connection != null && !connection.isClosed()) connection.close(); if (dataSource != null && !dataSource.isClosed()) dataSource.close(); } catch (Exception e) { e.printStackTrace(); } return result; }
更新方法和新增方法基本相同,只是 SQL 语句不同而已。返回的结果是受影响的行数。
简单的查询
public static ResultSet simpleQuery(String sql) { try { HikariDataSource dataSource = getDataSource(); Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); if (connection != null && !connection.isClosed()) connection.close(); if (dataSource != null && !dataSource.isClosed()) dataSource.close(); return resultSet; } catch (Exception e) { e.printStackTrace(); } return null; }
通过执行一条 SQL 语句来获取一个数据集合,使用的方法是 executeQuery 方法,返回的结果是一个 ResultSet 。
我们可以打印这个 ResultSet 。
public static void printResultSet(ResultSet resultSet) throws SQLException { if (resultSet != null) { ResultSetMetaData md = resultSet.getMetaData();// 获取键名 int columnCount = md.getColumnCount();// 获取行的数量 while (resultSet.next()) { StringBuilder builder = new StringBuilder(); for (int i = 1; i <= columnCount; i++) { String colName = md.getColumnName(i); Object val = resultSet.getObject(i); builder.append(MessageFormat.format("{0}:{1}", colName, val)); } print(builder.toString()); } } } public static void print(Object obj) { System.out.println(obj); }
至此,HikariCP简单的数据访问完成。
扫码分享
版权说明
作者:SQBER
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
{0}
{5}
{1}
{2}回复
{4}
*昵称:
*邮箱:
个人站点:
*想说的话: