如果有一天面试官要求你写下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编辑  收藏  举报

导航