传统JDBC开发(二)----抽象自己的工具类

在传统的JDBC开发中,有大量的重复代码,写起来很繁琐,所以我们考虑抽象出一个工具类,来更方便的实现JDBC的开发

首先我们要抽象出一个工具类

抽象出工具类的时候,我们要清楚哪些代码是我们在开发过程中重复写到的(比如创建和获取连接对象),于是将这些重复的代码抽象到自己的工具类中。

下面是我自己抽象出的工具类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
 * JDBC工具类
 * @author zkc
 *  @version 1.0 2017-09-21
 */
public class BaseDAO {
    /**
     * 连接对象
     */
    Connection conn = null;
    /**
     * 执行对象
     */
    PreparedStatement stmt = null;
    /**
     * 读取对象
     */
    ResultSet rs = null;

    /**
     * 获取连接对象的方法
     * @return Connection
     */
    public Connection getConn(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/pet","root","123");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }
    /**
     * 执行增删改操作时调用的方法
     * @param sql
     * @param args
     * @return int
     */
    public int update(String sql,Object...args){//实际开发中,由于不知道sql语句中要带的参数个数,所以我这样写可以更好的传递参数
        int result = 0;
        try {
            conn = getConn();
            stmt = conn.prepareStatement(sql);

            for(int i=0;i<args.length;i++){
                stmt.setObject(i+1, args[i]);
            }

            result = stmt.executeUpdate();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }
    /**
     * 执行查询操作时调用的方法
     * @param sql
     * @param args
     * @return ResultSet
     */
    public ResultSet search(String sql,Object...args){
        try {
            conn = getConn();
            stmt = conn.prepareStatement(sql);

            for(int i=0;i<args.length;i++){
                stmt.setObject(i+1, args[i]);
            }

            rs = stmt.executeQuery();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return rs;
    }
    /**
     * 关闭对象的方法
     */
    public void close(){
        try {
            if(rs!=null){
                rs.close();
            }
            if(stmt!=null){
                stmt.close();
            }
            if(conn!=null){
                conn.close();
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

抽象完工具类后,我们就可以开始使用自己抽象出的工具类了,具体使用如下

在dao的实现类中,我们只需要继承自己抽象出的工具类BaseDAO,就可以方便的调用自己抽象出来的所有功能。

import java.sql.ResultSet;
import java.util.ArrayList;

import com.pet.bean.pet;
import com.pet.dao.BaseDAO;
import com.pet.dao.petDAO;

public class petDAOImpl extends BaseDAO implements petDAO{
    /**
    *
    * @auther zkc
    */
    public int add(String name, int breed, int psex, String time, String des) {
        String sql = "insert into pet values(?,?,?,?,?)";

        //因为我抽出来的工具类update方法没有限制参数个数,所以这里传递参数十分方便
        int result = update(sql,name,breed,psex,time,des);        //由于是增加操作所以调用update方法

        return result;
    }

}

以上就是通过自己抽象出工具类实现JDBC的开发,对比没有使用工具类的版本,优点就是可以减少编写大量的重复代码,进行数据库操作时也比较方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值