今天开始来看看dbutils的源码,看介绍dbutils主要的两个类是QueryRunner和ResultSetHandler,看名字大概就能知道两个类的作用了,一个是负责执行sql,一个是负责处理结果。先来看QueryRunner类的实现。
一般数据库的操作就是增删改查,执行存储过程以及批量执行SQL。看QueryRunner的API就能发现,这么操作都提供了对应的执行方法。因为查询(query)会涉及到对查询结果的处理,所以先看更简单的update和insert吧。
看QueryRunner的源码会发现update同名的方法总共有7个,6个public,1个private。最终都是执行private的代码,把这个方法的代码贴出来。
private int update(Connection conn, boolean closeConn, String sql, Object... params) throws SQLException {
if (conn == null) { throw new SQLException("Null connection");}
if (sql == null) {
if (closeConn) {close(conn);}
throw new SQLException("Null SQL statement");
}
PreparedStatement stmt = null;
int rows = 0;
try {
//预编译SQL
stmt = this.prepareStatement(conn, sql);
//填充