• JDBC连接池&DBUtils


    JDBC连接池

    DBCP:Apache推出的Database Connection Pool

    使用步骤:

    > 添加jar包  commons-dbcp-1.4.jar  commons-pool-1.5.6.jar

    l  创建DBCP连接池工具类

    n  规范接口:javax.sql.DataSource接口

    n  实现类:BasicDataSource, 重写接口中的方法getConnection()

    使用读取配置文件的方式(加案例)

    DBCP中有一个工厂类BasicDataSourceFactory

    工厂类中有一个静态方法

    static DataSource createDataSource(Properties prop)

    此方法返回的就是DataSource接口的实现类对象BasicDataSource

    创建Propertis集合+IO技术读取配置文件

    把配置文件传入BasicDataSourceFactory静态方法createDataSource中

    public class DBCPUtilsReadConfig {

        private static DataSource dataSourse;

        static{

            try {

               InputStream is = DBCPUtilsReadConfig.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");

               //创建Propertis集合

               Properties pro=new Properties();

               pro.load(is);

               //把配置文件传入BasicDataSourceFactory静态方法createDataSource

               dataSourse = BasicDataSourceFactory.createDataSource(pro);

            } catch (Exception e) {

               throw new RuntimeException("读取配置文件失败");

        }      

      }

        //创建获取数据库连接对象的方法

        public static Connection getConnection(){

            try {

               return dataSourse.getConnection();

            } catch (SQLException e) {

               throw new RuntimeException(e+"连接数据库失败");

            }

        }

        public static void  close(ResultSet rs,Statement stat,Connection conn){

            if(rs!=null){

               try {

                   rs.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

            if(stat !=null){

               try {

                   stat.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

            if(conn != null){

               try {

                   conn.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

        }

    }

     

    C3P0连接池

    C3P0开源免费的连接池!目前使用它的开源项目有:Spring、Hibernate等。使用第三方工具需要导入jar包,c3p0使用时还需要添加配置文件 c3p0-config.xml

     

    创建C3P0连接池的工具类

    连接的规范接口:javax.sql.DataSource接口

    接口的实现类对象ComboPooledDataSource

    成员位置创建ComboPooledDataSource对象

    C3P0内部会自动扫描并解析xml文件,给ComboPooledDataSource设置数据量的4大连接信息

    创建一个静态方法返回Connection对象

    创建一个静态方法释放资源

    publicclass C3P0UtilsReadXML {

        privatestatic ComboPooledDataSource dataSource = new ComboPooledDataSource();

        //使用静态代码块给ComboPooledDataSource设置4大数据量连接信息

        /*static{

            try {

               dataSource.setDriverClass("com.mysql.jdbc.Driver");

                dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");

               dataSource.setUser("root");

               dataSource.setPassword("root");

            } catch (Exception e) {

               throw new RuntimeException("设置连接信息失败!");

            }

        }*/

        // 创建一个返回ComboPooledDataSource的方法

        publicstatic DataSource getDataSource(){

            returndataSource;

        }

        // 创建一个静态方法返回Connection对象

        publicstatic Connection getConnection() {

            try {

               returndataSource.getConnection();

            } catch (SQLException e) {

               thrownew RuntimeException(e + "获取数据库连接失败");

            }

        }

     

        // 定义一个释放资源的方法

        publicstaticvoid close(ResultSet rs, Statement stat, Connection conn) {

            if (rs != null) {

               try {

                   rs.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

            if (stat != null) {

               try {

                   stat.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

            if (conn != null) {

               try {

                   conn.close();

               } catch (SQLException e) {

                   e.printStackTrace();

               }

            }

        }

    }

    使用DBUtils工具类对数据库表进行增删改查

    DBUtils工具类作用:简化JDBC的开发(6步)

    DBUtils有3个核心类

    1.QueryRunner:使用QueryRunner中的方法对数据库进行增删改查

    2.DbUtils:提供了大量的释放资源的方法

    3.ResultSetHandler接口:提供了处理查询结果集的方法

    QueryRunner类

    构造方法:

    QueryRunner() 空参数构造方法

    调用更新和查询方法的时候,需要传入Connection对象

    QueryRunner(DataSource ds) 带DataSource数据库连接池的构造方法

    调用更新和查询方法的时候QueryRunner会自动从DataSource实现类对象中获取数据库连接对象,使用完毕会自动归还

    成员方法:

    执行执行增删改的成员方法

    int update(Connection conn, String sql, Object... params)用来执行增删改的SQL

    int update(String sql, Object... params) 用来执行增删改的SQL      

    参数:

    Connection conn:数据库连接对象

    String sql:拼接的sql语句,可以使用?占位符

    Object... params:?占位符的实际参数,可以使用Object[]

    返回值:

    int:执行的有效行数

    执行执行查询的成员方法

    <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

    <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)     

    参数:      

    Connection conn:数据库连接对象

    String sql:拼接的sql语句,可以使用?占位符

    Object... params:?占位符的实际参数,可以使用Object[]

    ResultSetHandler<T> rsh:用来存储查询之后的结果集,可以传入ResultSetHandler9种实现类对象

    返回值:

    <T> T:传入的ResultSetHandler实现类不同,返回的结果集也不同,使用泛型,传入什么结果集,就返回对应的类型

  • 相关阅读:
    java内联函数
    jvm垃圾回收
    jvm内存管理
    java进程和线程的区别
    jvm
    简单易学的SSM(Spring+SpringMVC+MyBatis)整合
    Spring之声明式事务
    SpringMVC知识点小结
    Servlet之文件的上传与下载
    java使用字节流和字符流实现文件复制
  • 原文地址:https://www.cnblogs.com/outsidersblogs/p/7020212.html
Copyright © 2020-2023  润新知