天高云淡 发表于 2017-1-13 09:06:24

java 对数据库访问 spring的JdbcTemplate和apache的Dbutils

  apache的commons-dbutils包里:
org.apache.commons.dbutils.QueryRunner

  可以方便地通过jdbc访问数据库,用法:
  QueryRunner runner = new QueryRunner(dataSource);
  一些方法如下:
  public int[] batch(String sql, Object[][] params); //批量更新
  public <T> T query(String sql, Object param, ResultSetHandler<T> rsh); //带一个参数的查询,
  其中ResultSetHandler是一个接口,要实现public T handle(ResultSet rs) 的方法,对数据处理
  public <T> T query(String sql, Object[] params, ResultSetHandler<T> rsh) //带多个参数的查询
  public int update(String sql) //更新操作
  public int update(String sql, Object... params) //带参数的更新
  apache的QueryRunner的方法都比较简单明了,不过多数要自己实现对数据处理的接口,个人感觉代码相对用Spring的JdbcTemplate要多点代码
  Spring的JdbcTemplate类,在org.springframework包内,
org.springframework.jdbc.core.JdbcTemplate

  构造方法也是:JdbcTemplate queryer = new JdbcTemplate(ds);
  public void execute(final String sql) //执行sql语句,一般是ddl
  public int[] batchUpdate(final String[] sql)  //批量执行sql语句
  public int[] batchUpdate(String sql, final BatchPreparedStatementSetter pss) //批量执行,通过pss接口设置参数
  查询方法有很多,例如:
  public Object query(String sql, Object[] args, int[] argTypes, ResultSetExtractor rse);
  public void query(PreparedStatementCreator psc, RowCallbackHandler rch);
  public void query(String sql, Object[] args, RowCallbackHandler rch);
  也提供了一些已封装好的方法:
  queryForInt, queryForMap, queryForObject,但要注意当返回数据量为0时,会抛异常
页: [1]
查看完整版本: java 对数据库访问 spring的JdbcTemplate和apache的Dbutils