文档章节

工厂模式的jdbc

QH_C
 QH_C
发布于 2014/11/02 20:49
字数 389
阅读 17
收藏 0

1、jdbc 接口:

package com.jdbcTest;

import java.sql.Connection;

/**
 *@author WHD
 *2014-11-1
 */
public interface Jdbc {
public Connection getCon();
public void closeCon(Connection con);
}

2、抽象方法实现接口

package com.jdbcTest;

import java.sql.Connection;

/**
 *@author WHD
 *2014-11-2
 */
public abstract class JdbcImp  implements Jdbc{
    public abstract Connection getCon();
    public void closeCon(Connection con){
        try{
            con.close();
        }catch(Exception e){
            e.printStackTrace();
            
        }
    }
}

3、继承抽象类实现 connection 的获取:

package com.jdbcTest;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 *@author WHD
 *2014-11-1
 */
public class getConImpJdbc extends JdbcImp{

    @Override
    public Connection getCon() {
        Connection con=null;
        try {
            Class.forName(Configer.driverClass);
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("getcon出现异常");
        }
         try {
             con=DriverManager.getConnection(Configer.url, Configer.user, Configer.password);
             return con;
         }catch(Exception e){
             e.printStackTrace();
         }
        return null;
    }

    @Override
    public void closeCon(Connection con) {
        // 调用父类的close方法,但是我们发现这里的父类就是一个接口但是程序会自动去调用是想了这个接口的类
        try{
        super.closeCon(con);
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("在jdbc实现时出现错误");
        }
    }

}

4、读取配置文件 java.util.Properties  extends HashTalbe

package com.jdbcTest;

import java.util.Properties;
import java.io.*;
/**
 *@author WHD
 *2014-11-1
 */
// 获取配置文件
public class Configer {

public static Properties  pro= new Properties();
static {
    
        try {

//  如果配置文件和类不在同一目录下则使用  new InputStream (new File (File.separator))  来获取具体的配置文件
            pro.load(Configer.class.getResourceAsStream("jdbc.properties"));
        
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
}
public  static String driverClass=pro.getProperty("driverClass");
public static String user=pro.getProperty("user");
public static String password=pro.getProperty("password");
public static String url=pro.getProperty("url");

}

5、测试类

package com.jdbcTest;

import java.sql.Connection;
import java.sql.Statement;

/**
 *@author WHD
 *2014-11-1
 */
public class Test {
public static void main(String[]args){
    Connection con=null;
    getConImpJdbc  getCon=null;
    try{
    //con=getConImpJdbc.class.newInstance().getCon();
        getCon=new getConImpJdbc();
        con=getCon.getCon();
        Statement sta=con.createStatement();
        String sql= "insert into user values(5,'ww3',11,11)";
        sta.executeUpdate(sql);
    System.out.println(con);
    }catch(Exception e){
        e.printStackTrace();
        System.out.println("测试类出现异常");
    }finally{
        getCon.closeCon(con);
    }
}
}


© 著作权归作者所有

QH_C
粉丝 2
博文 75
码字总数 69153
作品 0
朝阳
程序员
私信 提问
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
关于spring是用注解好,还是用xml好?

最近学习了一下java的工厂设计模式,感觉工厂模式最大的优点和spring的IOC有些相像,比如我们为一个User接口写了多个实现,记为:UserImpl1、UserImpl2,可以很轻松的来回切换实现,对于工厂...

上帝爱众生
2015/05/19
435
6
为什么java中用枚举实现单例模式会更好

枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这...

zhoujy
2013/06/01
0
0
策略模式与SPI机制,到底有什么不同?

这里说的策略模式是一种设计模式,经常用于有多种分支情况的程序设计中。例如我们去掉水果皮,一般来说对于不同的水果,会有不同的拨皮方式。此时用程序语言来表示是这样的: 如上面代码所写...

陈树义
2018/09/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Node.js 多进程处理CPU密集任务

Node.js 单线程与多进程 大家都知道 Node.js 性能很高,是以异步事件驱动、非阻塞 I/O 而被广泛使用。但缺点也很明显,由于 Node.js 是单线程程序,如果长时间运算,会导致 CPU 不能及时释放...

Svend
40分钟前
3
0
Django笔记-3-模型-20190526

简介 django为各种数据库提供了很好的支持,django对这些数据库提供了统一的调用API;可以根据不同的也无需求选择不同的数据库; 配置数据库 在setting.py文件中配置数据库 DATABASES = { ...

Frank1126lin
56分钟前
3
0
OSChina 周日乱弹 —— 程序员做噩梦

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 手嶌葵《Kiss The Girl》 《Kiss The Girl》- 手嶌葵 手机党少年们想听歌,请使劲儿戳(这里) @Sharon啊 :今天...

小小编辑
今天
190
11
Another app is currently holding the yum lock; waiting for it to exit...

Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 153 M RSS (266 MB VSZ) Started: Thu Jul 12 00:03......

圣洁之子
今天
2
0
FastDateFormat 研究

FastDateFormat 对缓存的利用,其实就是用ConcurrentHashMap 做了一个map类型的缓存 public F getInstance(final String pattern, TimeZone timeZone, Locale locale) { Validate......

暗中观察
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部