如果有一天面试官要求你写下JDBC代码,你可以这样写!
按照这个方法写,至少85分! 来自:http://www.cnblogs.com/MartinChen999/archive/2012/01/04/2312278.html
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 * @return */ 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); } } }
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); }