Java Durid进行JDBC连接详解
更新时间:2021年09月15日 09:15:38 作者:Vicky_Tang
今天给大家带来的是关于Java的相关知识,文章简单使用Durid进行JDBC连接,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
一、Druid简介
Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。
当然Druid不仅仅是一个连接池,还有很多其他的功能。
二、Druid的优点
- 高性能。性能比dbcp、c3p0高很多。
- 只要是jdbc支持的数据库,druid都支持,对数据库的支持性好。并且Druid针对oracle、mysql做了特别优化。
- 提供监控功能。可以监控sql语句的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈等信息,来了解连接池、sql语句的工作情况,方便统计、分析SQL的执行性能
三、使用 Durid 进行 JDBC MySQL 的连接
3.1 添加 Druid 的依赖、数据库驱动
<!-- mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.27</version> </dependency>
3.2 创建 JDBC 工具类
package cn.kgc.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.log4j.Logger; import java.io.File; import java.io.FileInputStream; import java.io.Serializable; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Properties; /** * 【JDBC】业务工具类 */ public class JDBCReadUtils implements Serializable { private static Logger logger = Logger.getLogger(JDBCReadUtils.class); /** * 实现JDBCHelper的单例化 */ private static JDBCReadUtils instance = null; private QueryRunner runner = null; /** * 实现单例的过程中,创建唯一的数据库连接池 */ private JDBCReadUtils(String url) { Properties properties = new Properties(); try { properties.load(new FileInputStream(new File(url))); runner = new QueryRunner(DruidDataSourceFactory.createDataSource(properties)); } catch (Exception e) { logger.error(e.getMessage(), e); } } public JDBCReadUtils() { } /** * 获取单例 * * @return 单例 */ public static JDBCReadUtils getInstance(String url) { if (instance == null) { synchronized (JDBCReadUtils.class) { if (instance == null) { instance = new JDBCReadUtils(url); } } } return instance; } /** * 查询(返回Array结果) */ private Object[] queryArray(String sql, Object... params) { Object[] result = null; try { result = runner.query(sql, new ArrayHandler(), params); } catch (SQLException e) { logger.error(e.getMessage()); } return result; } /** * 查询(返回ArrayList结果) */ public List<Object[]> queryArrayList(String sql, Object... params) { List<Object[]> result = null; try { result = runner.query(sql, new ArrayListHandler(), params); } catch (SQLException e) { logger.error(e.getMessage()); } return result == null ? new ArrayList<>() : result; } /** * 更新(包括UPDATE、INSERT、DELETE,返回受影响的行数) */ public int update(String sql, Object... params) { int result = 0; try { result = runner.update(sql, params); } catch (SQLException e) { logger.error(e.getMessage()); } return result; } }
3.3 添加配置参数
在 resource 目录中添加 jdbc.properties 文件并添加如下配置
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://singleNode:3306/spark?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=UTF-8 username=root password=root
3.4 测试代码
package cn.kgc; import cn.kgc.utils.JDBCReadUtils; import java.util.List; public class Test { public static void main(String[] args) { List<Object[]> result = JDBCReadUtils.getInstance("C:\\Users\\Administrator\\Desktop\\总部实战课\\spark\\project\\src\\main\\resources\\jdbc.properties") .queryArrayList("select * from entity_question_number_accuracy limit 10;"); for (Object o[] : result) { System.out.println(o[0] + "\t" + o[1] + "\t" + o[2] + "\t" + o[3]); } } }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
详解Java的Hibernate框架中的缓存与原生SQL语句的使用
这篇文章主要介绍了Java的Hibernate框架中的缓存与原生SQL语句的使用,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下2015-12-12BeanUtils.copyProperties使用总结以及注意事项说明
这篇文章主要介绍了BeanUtils.copyProperties使用总结以及注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08@RequestParam 和@RequestBody注解的区别解析
在 Spring MVC 中,我们可以使用 @RequestParam 和 @RequestBody 来获取请求参数,但它们在用法和作用上有一些区别,这篇文章主要介绍了@RequestParam 和@RequestBody注解的区别,需要的朋友可以参考下2023-06-06使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)
在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求,具体内容详情大家参考下本文2018-01-01
最新评论