好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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 的依赖、数据库驱动

?

1

2

3

4

5

6

7

8

9

10

11

12

<!-- 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 工具类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

package cn.kgc.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import org.apache测试数据mons.dbutils.QueryRunner;

import org.apache测试数据mons.dbutils.handlers.ArrayHandler;

import org.apache测试数据mons.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 文件并添加如下配置

?

1

2

3

4

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://singleNode:3306/spark?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=UTF-8

username=root

password=root

3.4 测试代码

?

1

2

3

4

5

6

7

8

9

10

11

12

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 ]);

         }

     }

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

原文链接:https://blog.csdn.net/sweet19920711/article/details/120247206

查看更多关于Java Durid进行JDBC连接详解的详细内容...

  阅读:13次