JDBC连接池&DButils

作者: zengsiyong | 来源:发表于2017-06-12 22:47 被阅读39次

一、JDBC连接池

  • 概念:实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决这个问题,通过我们采用连接池技术,来共享链接Connection,解决资源浪费,提高代码性能,代码没有节省

  • 规范:java为数据库连接池提供了公共的接口 javax.sql.DataSource,常见的连接池:DBCP\C3P0都用不同的方法实现了这个接口

二、C3P0连接池

  • 使用步骤
    1. 导入2个jar包

    2.配置文件设置参数
    配置文件名称:c3p0-config.xml(固定)
    配置文件位置:src(类路径)
    配置文件内容:修改常见配置项包括必须项user,password,diverClass(驱动,如com.mysql.jdbc.Driver),jdbcUrl(mysql路径,如jdbc:mysql://localhost:3306/数据库名称)和一些其他的基本配置项
    3.编写工具类
    c3p0提供核心工具类:ComboPooledDataSource,要使用连接池就必须创建该类的实例对象(注意区分命名配置和默认配置)
    此外,需要自己创建一个工具类,例如C3P0Utils,该类的代码应包括如下

三、使用DBUtils操作增删改查

  • 概念:如果只使用JDBC开发,会有大量冗余代码,为了简化开发就使用apache commons组件的成员之一:DBUtils(封装了对JDBC的操作)
  • 三个核心功能
    1.QueryRunner中提供对sql语句操作的API
    2.ResultSetHandler接口,用于定义select操作后,怎样封装结果集
    3.DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

四、 QueryRunner核心类

  • QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护链接connection
  • update(String sql,Object..params),执行更新数据
  • QueryRunner的查询方法是:
    public <T> T query(String sql, ResultSetHandler<T> rh, Object… params)
    public <T> T query(Connection con, String sql, ResultSetHandler<T> rh, Object… params)
    query()方法会通过sql语句和params查询出ResultSet,然后通过rh把ResultSet转换成对应的类型再返回

五、ResultSetHandler结果集处理类

  • 执行select语句之后得到的是ResultSet,然后对ResultSet进行转换,得到最终我们想要的数据。可以把ResultSet的数据放到一个List中,也可以放到一个Map中,或是一个Bean中。
  • DBUtils提供了一个接口ResultSetHandler,它就是用来将ResultSet转换成目标类型的工具。

    案例讲解:
  • BeanListHandler的使用:


    image.png
  • BeanHandler的使用:
    该方法中调用query(sql,rsh,param),其中第三个参数需要现在该方法括号内声明变量,且该方法直接声明为Product类型,所以将查询返回的单一的查询结果直接return。


    image.png

六、DBUtils工具类

closeQuietly(Connection conn)关闭连接,如果有异常try后不抛出
commitAndCloseQuietly(Connection conn)提交并关闭连接
rollbackAndCloseQuietly(Connection conn)回滚并关闭连接

综合案例

  • 案例——删除


  • 案例——查询1
public void fun1() throws SQLException {
        DataSource ds = JdbcUtils.getDataSource();
        QueryRunner qr = new QueryRunner(ds);
        String sql = "select * from tab_student where number=?";
        Map<String,Object> map = qr.query(sql, new MapHandler(), "S_2000");
        System.out.println(map);
    }
  • 案例——查询2
public void fun2() throws SQLException {
        DataSource ds = JdbcUtils.getDataSource();
        QueryRunner qr = new QueryRunner(ds);
        String sql = "select * from tab_student where number=?";
        Student stu = qr.query(sql, new BeanHandler<Student>(Student.class), "S_2000");
        System.out.println(stu);
    }

八、JavaBean组件

  • 概念:JavaBean就是一个类,在开发中常用于封装数据
  • 特性
    1. 需要实现接口:java.io.Serializable (通常省略不写)
    2. 提供私有字段:private 类型 字段名;
    3. 提供getter/setter方法
    4. 提供无参函数
  • 举例


相关文章

  • 高级应用--JDBC(二)

    封装JDBC抽取DBUtils JDBC事务 数据库连接池讲解 7.封装JDBC抽取DBUtils 为了使得编辑参...

  • JAVAEE——JDBC连接池&DBUtils

    JDBC连接池&DBUtils 使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的...

  • JDBC连接池&DButils

    一、JDBC连接池 概念:实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决这个问题,通过...

  • JdbcTemplate

    JdbcTemplate spiring 提供用于操作jdbc工具类,类似:DBUtils; 依赖 连接池Data...

  • Druid C3P0连接池的使用 和DBUtils的使用 以及

    01 Druid 连接池 02 C3P0连接池 03 DBUtils 使用 04 JDBC的事务管理

  • JDBC&DBUtils

    1、阐述JDBC操作数据库的步骤 (1)加载驱动。 Class.forName("oracle.jdbc.driv...

  • 使用 java程序 操作 数据库

    我们以后 开发的时候使用 java程序 操作 数据库 JDBC简化 DBUtils提高性能的 连接池技术 writ...

  • DBUtils 基础

    DBUtils DbUtils介绍 DbUtils库是一套小巧的用来简化 JDBC 调用的库。JDBC源代码库单调...

  • JDBC框架——DBUtils

    JDBC框架——DBUtils 本文包括: 1、DBUtils简介 2、DbUtils类 3、QueryRunne...

  • Hibernate

    为什么要使用hibernate,jdbc+dbutils不是挺好的吗? 1、回顾一下jdbc和dbutils 2、...

网友评论

    本文标题:JDBC连接池&DButils

    本文链接:https://www.haomeiwen.com/subject/cfvmxxtx.html