在传统的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的开发,对比没有使用工具类的版本,优点就是可以减少编写大量的重复代码,进行数据库操作时也比较方便。