DBUitls是对jdbc简单的封装;
核心运行类:QueryRunner
构造方法:
QueryRunner() //没有自动传入连接池,用于事务管理
QueryRunner(DataSource ds)
方法:(增删改用update,查用query)
(sql语句中的参数用?作为占位符,Object...params为参数列表)
int update(String sql,Object... params)
int update(Connection conn,String sql,Object... params) //用于事务管理
T query(String sql,ResultSetHandler<T> rsh,Object...params)
T query(Connection conn,String sql,ResultSetHandler<T> rsh,Object...params) //用于事务管理
int[] batch(String sql,Object[][]params) //批处理
int[] batch(Connection conn,String sql,Object[][]params)
事务相关类DBUtils
方法:
static void commitAndCloseQuietly(Connection conn)
static void rollbackAndCloseQuietly(Connection conn)
注意:在使用DBUtils中的事务的时候,得到Connection之后先setAutocommmit()。
ResultSetHandler:(QueryRunner.query中接受结果集的类)
使用自定义类接收数据:
查询一条记录封装到自定义bean中:
1 User user = qr.query("select * from user where id = ?", 1, new ResultSetHandler<User>() { 2 @Override 3 public User handle(ResultSet rs) throws SQLException { 4 User user = new User(); 5 if (rs.next()) { 6 user.setId(rs.getInt("id")); 7 user.setUsername(rs.getString("username")); 8 } 9 return user; 10 } 11 });
查询多条记录封装到自定义bean中:
1 List list = qr.query("select * from user",new ResultSetHandler<List<User>>() { 2 @Override 3 public List handle(ResultSet rs) throws SQLException { 4 List<User> list = new ArrayList<User>(); 5 while(rs.next()) { 6 User user = new User(); 7 user.setId(rs.getInt("id")); 8 user.setUsername(rs.getString("username")); 9 list.add(user); 10 } 11 return list; 12 } 13 });
ResultSetHandler的实现类:
ArrayHandler&&ArrayListHandler:将一条记录封装到一个Object数组中&&将多条记录封装到一个Object数组的集合中
BeanHandler&&BeanListHandler:将一条记录封装到一个javabean中&&将多条记录封装到一个javabean的list集合中
MapHandler&&MapListHandler:将一条记录封装到一个Map集合中&&将多条记录封装到一个装有Map的List集合中
ColumnListHandler:将数据中的某一列封装到list集合中
ScalarHandler:将单值封装