A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Tong心未泯 初级黑马   /  2017-12-3 14:35  /  1035 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JavaWeb JDBC

案例
代码
思路
案例涉及的知识点(学习目标)
补充
使用JDBC完成分类表的CRUD
 
1.JDBC的开发步骤
2.executeQuery() executeUpdate()
3.单元测试
封装工具类
 
 
 
 
DBCP和C3P0连接池使用
 
C3PO连接池的使用
使用C3P0改造工具类,并且使用工具类完成增删改查
 
 
 
 
 
 
 
 
熟练通过C3P0连接池对数据增删改查
 
 
 

   案例一:使用JDBC完成CRUD的操作
1.JDBC的概述
    JDBC:Java DataBase Connectivity Java数据库的连接.
    SUN公司统一提供的一套接口规范(JDBC).各个数据库生产商提供实现.
      驱动:两个硬件设备之间通信的桥梁.
2.JDBC的开发步骤
注册驱动:
  获得连接:
  获得执行SQL语句对象:
释放资源:
3.代码实现步骤
创建一个Java项目.
    引入mysql的驱动包.
    编写代码.
    完成CRUD的操作:

案例二:使用连接池改造JDBC的工具类
1.在自定义连接池中如何增强Connectionclose方法:
* 增强一个Java类中的某个方法有几种方式??? (掌握前两种方式了解即可 DK,)
    * 一种方式:继承的方式.
       * 能够控制这个类的构造的时候,才可以使用继承.

    * 二种方式:装饰者模式方式.
* 包装对象和被包装的对象都要实现相同的接口.
        * 包装的对象中需要获得到被包装对象的引用.
        ***** 缺点:如果接口的方法比较多,增强其中的某个方法.其他的功能的方法需要原有调用.

    * 三种方式:动态代理的方式.
* 被增强的对象实现接口就可以.
2.继承和装饰者的案例
/**
* 继承的方式增强一个类中某个方法:
*/
class Man{
    public void run(){
        System.out.println("....");
    }
}

class SuperMan extends Man{
    public void run(){
        // super.run();
        System.out.println("....");
    }
}

/**
* 使用装饰者的方式完成类的方法的增强
步骤 *1.定义一个被包装类的引用
* 2.通过构造方法对引用赋值
* 3.改造要升级的方法
*/
interface Waiter{
    public void server();
}

class Waiteress implements Waiter{

    @Override
    public void server() {
        System.out.println("服务...");
    }

}

class WaiteressWrapper implements Waiter{
    private Waiter waiter;

    public WaiteressWrapper(Waiter waiter) {
    this.waiter = waiter;
    }

    @Override
    public void server() {
        System.out.println("微笑...");
        // this.waiter.server();

    }
}
3.使用装饰者模式增强Connectionclose方法
public class MyConnection implements Connection{

    private Connection conn;
    private List<Connection> list;

    public MyConnection(Connection conn,List<Connection> list) {
        this.conn = conn;
        this.list = list;
    }

    @Override
    public void close() throws SQLException {
        list.add(conn);
    }
     ...
}

连接池的getConnection方法:
    @Override
    // 获得连接的方法:
    public Connection getConnection() throws SQLException {
        if(list.size() <= 0){
            for(int i=1;i<=3;i++){
                Connection conn = JDBCUtils.getConnection();
                list.add(conn);
            }  
        }
        Connection conn = list.remove(0);
        MyConnection myConn = new MyConnection(conn, list);
        return myConn;
    }
4.常见的开源的数据库连接池:
  DBCP
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
  C3P0:(最常用的 掌握)
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目HibernateSpring等。
  Tomcat内置连接池:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马