druid连接池与DButils操作mysql数据库

Druid是什么?

druid德鲁伊是阿里开源的一个连接池,是国内性能最高的连接池。源码地址:

https://github.com/alibaba/druid

DButils是什么?

dbutils是一个jdbc的工具,主要用来简化jdbc的代码。源码地址:

http://commons.apache.org/proper/commons-dbutils/

druid连接池工具抽取:

  • 下载jar包:druid-1.0.26.jar,这里使用1.0.26为例子!
  • 下载DButils的jar包:commons-dbutils-1.6.jar,这里使用1.6版本为例子!
  • 创建配置文件:driver.properties
  • ​driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test
    username=root
    password=root
    
    ​

     

  • 创建工具类DruidUtil类
  • public class DriverUtil{
        private static String driverClassName;
        private static String url;
        private static String username;
        private static String password;
    
        public static DataSource dataSource;
        
        InputStream input = null;
        static{
            try{
            input = DriverUtil.class.getClassLoader().getResourceAsStream("druid.properties");
            Properties properties = new Properties();
            properties.load(input);
            //创建连接池
            dataSource = DruidDataSourceFactory.createDateDataSource(properties);
            } catch (Exception e){
                e.printStackTrace();
            }
        }
        
        //获取dataSource数据源
        public static DataSource getDataSource(){
            return dataSource;
        }
    
        //获取connection连接
        public static Connection getConnection(){
            Connection connection = dataSource.getConnection();
            return connection;
        }
    
        //关闭连接(将数据源还给连接池)
        public static void close(ResultSet resultSet,Statement statement,Connection connection){
            if(resultSet != null){
                resultSet = null;        
            }
            if(statement != null){
                statement = null;
            }
            if(connection != null){
                connection = null;
            }
        } 
    }

     

  • 测试查询所有数据:
  • public class DruidTest{
    
        @Test
        public void select(){
            QueryRunner qr = new QueryRunner(DruidUtil.getDataSource());
            String sql = "select * from user";
            List users = qr.query(sql,new BeanListHandler(User.class));
            for(User user : users){
                System.out.println(user);
            }
            
        }
    
    }

     

  • DbUtil有三个功能:
  1. QueryRunner中提供对sql语句操作的API.
  2. ResultSetHandler接口,用于定义select操作后,怎么封装结果集。
  3. DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
  • QueryRunner核心类介绍

      1.提供数据源

       构造方法:QueryRunner(DataSource)创建核心类,并提供数据源,内部自己维护Connection

       普通方法:

              1.update(String sql,Object ...params)执行DML语句

              2.query(String sql,ResultSetHandler,Object ...parames)执行DQL语句,并将查询结果封装到对象中。

      2.提供连接

                沟通方法:QueryRunner(),创建核心类,没有提供数据源,在进行具体操作时,需要手动提供Connection

                普通方法:

                        1.update(Connection connection,String sql,Object ...params)使用提供Connection,完成DML语句。

                        2.query(Connection connection,String sql,ResultSetHandler,Object ...params)使用提供的Connection,执行DQL.

  • DbUtils常用的类与方法:
  • DBUtils常用类与方法
    
    - QueryRunner构造方法
      - QueryRunner(DataSource) 创建核心类,并提供数据源,内部自己维护Connection
      - QueryRunner() 创建核心类,没有提供数据源,在进行具体操作时,需要手动提供Connection
      
    
    - QueryRunner 用来执行SQL语句对象
      - update(String sql , Object ... params) 执行DML语句
      - update(Connection conn, String sql, Object… params)插入表记录、更新表记录、删除表记录
      - query(String sql , ResultSetHandler , Object ... params) 执行DQL语句,并将查询结果封装到对象中。
      - query(Connection conn, String sql, ResultSetHandler handler, Object… params) 查询表记录
      
    - ResultSetHandler 处理结果集的对象
      - BeanHandler:将结果集中第一条记录封装到一个指定的javaBean中。
        - BeanHandler(Product.class)  --> Proudct
      - BeanListHandler:将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
        - BeanListHandler(Product.class) --> List 
      - ScalarHandler:它是用于单数据。例如select count(*) from 表操作。
        - ScalarHandler()  --> Long
      - ColumnListHandler:将结果集中指定的列的字段值,封装到一个List集合中
        - ColumnListHandler("pname")  --> List
    

     

你可能感兴趣的:(java基础)