如果有一天面试官要求你写下JDBC代码,你可以这样写!
按照这个方法写,至少85分!
DbConnectionManager的代码就不贴出来。关键的是以下几个类。
1、JdbcHelper类
/**
* 类描述:jdbc 工具类
*/
public abstract class JdbcHelper{
/**
* 处理查询类的函数
* @param callback
* @return
*/
public static Object doJdbc(JdbcQueryCallback callback){
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
con = DbConnectionManager.getConnection();
callback.done(con, pstmt, rs);
}
catch (SQLException e){
callback.error(e);
}
finally{
DbConnectionManager.closeConnection(rs, pstmt, con);
}
return callback.getResult();
}
/**
* 处理命令类的函数
* @param callback
*/
public static void doJdbc(JdbcCommandCallback callback){
Connection con = null;
PreparedStatement pstmt = null;
try{
con = DbConnectionManager.getConnection();
callback.done(con, pstmt);
}
catch (SQLException e){
callback.error(e);
}
finally{
DbConnectionManager.closeConnection(pstmt, con);
}
}
/**
* 处理命令类,并返回执行结果 true/false
* @param callback
*/
public boolean doJdbc(JdbcBoolCommandCallback callback)
{
Connection con = null;
PreparedStatement pstmt = null;
try{
con = DbConnectionManager.getConnection();
callback.done(con, pstmt);
}
catch (SQLException e){
callback.error(e);
}
finally{
DbConnectionManager.closeConnection(pstmt, con);
}
return callback.getResult();
}
/**
* 批处理命令类的函数
* @param callback
*/
public static void doBatchJdbc(JdbcCommandCallback callback){
Connection con = null;
PreparedStatement pstmt = null;
try{
con = DbConnectionManager.getConnection();
con.setAutoCommit(false);
callback.done(con, pstmt);
con.commit();
}
catch (SQLException e){
callback.error(e);
}
finally{
DbConnectionManager.closeConnection(pstmt, con);
}
}
}
2、JdbcQueryCallback类
/**
* 查询式callback
*/
public interface JdbcQueryCallback
{
/**
* 执行sql
* @param con
* @param pstmt
* @param rs
* @throws SQLException
*/
public void done(Connection con, PreparedStatement pstmt, ResultSet rs)
throws SQLException;
/**
* 打印错误日志
*/
public void error(SQLException e);
/**
* 获取查询结果
*/
public Object getResult();
}
3、JdbcCommandCallback类
/**
* 命令式callback
*/
public interface JdbcCommandCallback
{
/**
* 执行sql
* @param con
* @param pstmt
* @param rs
* @throws SQLException
*/
public void done(Connection con, PreparedStatement pstmt) throws SQLException;
/**
* 打印错误日志
*/
public void error(SQLException e);
}
4、JdbcBoolCommandCallback类
/**
* 命令式callback
*/
public interface JdbcBoolCommandCallback extends JdbcCommandCallback{
/**
* 返回命令执行结果,
* @return true 成功
* false 失败
*/
public boolean getResult();
}
posted on 2012-01-04 17:20 small.ming 阅读(2173) 评论(0) 编辑 收藏 举报