Apache Commons logo Commons DbUtils

Release Notes

Release History

Version Date Description
1.6 TBA Bugfixes and addition of insert methods
1.5 2012-07-20 Bugfixes and addition of BeanMapHandler
1.4 2011-10-23 Bugfixes and addition of asynchronous QueryLoader
1.3 2009-11-04 Adds Java5 generics and varargs
1.2 2009-03-06 Another round of fixes; deprecates methods in preparation for varargs in java5
1.1 2006-12-01 Last couple of years of fixes
1.0 2003-11-10 First release of DbUtils

Release 1.6 - TBA

Type Changes By
update In BeanProcessor#isCompatibleType, can Integer.class.isInstance(value) be replaced by value instanceof Integer (etc)? Simplified code by using instanceof. Fixes DBUTILS-85. sebb
fix DBUtils can't build using JDK 1.7 - DriverProxy needs to implement getParentLogger() Add dynamic invocation. Fixes DBUTILS-106. Thanks to Niall Pemberton. sebb
add Create functionality to return auto-generated keys in batches of SQL inserts Fixes DBUTILS-108. Thanks to Micah Huff. wspeirs
add Patch QueryLoader to also load from XML properties files Fixes DBUTILS-107. Thanks to PB. wspeirs
fix Updated the use of getColumnName to try getColumnLabel first Fixes DBUTILS-100. Thanks to xiaofei.xu. wspeirs
add Add missing JavaDoc to QueryRunner#insert Fixes DBUTILS-98. Thanks to Moandji Ezana. simonetripodi
add Add an Abstract ResultSetHandler implementation in order to reduce redundant 'resultSet' variable invocation Fixes DBUTILS-97. simonetripodi
fix DbUtils#loadDriver(ClassLoader,String) makes DriverManager throwing "No suitable driver found for jdbc" if ClassLoader is not the System's one Fixes DBUTILS-96. Thanks to yuyf. simonetripodi
add Added insert methods to QueryRunner and AsyncQueryRunner that return the generated key. Fixes DBUTILS-87. Thanks to Moandji Ezana. wspeirs

Release 1.5 - 2012-07-20

Type Changes By
update Provide test coverage for org.apache.commons.dbutils.DbUtils Fixes DBUTILS-94. Thanks to Benedikt Ritter. simonetripodi
fix Source assembly artifact fails to build a site because of missing pmd-ruleset.xml Fixes DBUTILS-93. Thanks to Stevo Slavic. simonetripodi
update Enhance BasicRowProcessor to have row mapping easier to configure Fixes DBUTILS-91. Thanks to Stevo Slavic. simonetripodi
update Updated pom.xml: Java 1.6 now required, clirr and compiler plugin removed Thanks to wspeirs.
fix BeanProcessor method processColumn should take SQLXML in consideration Fixes DBUTILS-84. Thanks to Tiago Cavaleiro. wspeirs
update Updated documentation to better reflect the use of pmdKnownBroken Fixes DBUTILS-77. wspeirs
fix Added a fixed Locale (Locale.ENGLISH) to all toLowerCase calls in BasicRowProcessor Fixes DBUTILS-73. Thanks to Sebb.
add Added BeanMapHandler Fixes DBUTILS-67. Thanks to Michael Osipov.
update Added generics to ScalarHandler, ColumnHandler, and KeyedHandler Fixes DBUTILS-66. Thanks to Michael Osipov.

Release 1.4 - 2011-10-23

Type Changes By
fix DbUtils.loadDriver() uses Class.forName() Fixes DBUTILS-81.
fix DbUtils.loadDriver catches Throwable Fixes DBUTILS-80.
fix Duplicate code introduced during Java 1.5 branch merge Fixes DBUTILS-65.
fix fillStatement doesn't complain when there are too few parameters Fixes DBUTILS-79.
update efficient usage from findbugs Fixes DBUTILS-75.
add Add asynchronous batch, query, and update calls Fixes DBUTILS-78. wspeirs

Release 1.3 - 2009-11-04

Type Changes By
add Java 1.5 generics and varargs Fixes DBUTILS-48. dfabulich
update BeanProcessor#mapColumnsToProperties now prefers to use column labels over column names (where aliases are not set, these should be identical) Fixes DBUTILS-57. dfabulich
update Setting pmdKnownBroken in QueryRunner constructor now completely ignores ParameterMetaData Fixes DBUTILS-58. dfabulich
fix Fixed error message in QueryRunner#rethrow Fixes DBUTILS-60. dfabulich

Release 1.2 - 2009-03-06

Type Changes By
update Removed setDataSource method to guarantee thread safety Fixes DBUTILS-52. dfabulich
update Made numerous private instance members final to guarantee thread safety; changed protected member of KeyedHandler to final Fixes DBUTILS-51. sebb
remove Remove old Maven1/Ant build scripts bayard
update Support bean property to SQL IN parameter mapping Fixes DBUTILS-29. dfabulich
fix fillStatement setNull bug with the Postgres/Derby JDBC driver (and others) Fixes DBUTILS-31. dfabulich
update Make GenericListHandler (now AbstractListHandler) public Fixes DBUTILS-33. dfabulich
update BasicRowProcessor loses any information on database field case Fixes DBUTILS-34. dfabulich
update BeanListHandler#handle(ResultSet) is not optimal Fixes DBUTILS-37. dfabulich
fix NullPointerException occured at rethrow method Fixes DBUTILS-40. dfabulich
update Object with Long or Decimal got initial zero value while database field is null Fixes DBUTILS-42. dfabulich
update example documentation page, update query Fixes DBUTILS-38. dennisl
fix Add serialVersionUID to BasicRowProcessor.CaseInsensitiveHashMap Fixes DBUTILS-36. bayard

Release 1.1 - 2006-12-01

Type Changes By
fix Tests fail to build under 1.6, and warning while compiling source Fixes DBUTILS-32. bayard
fix BeanListHandler and BeanHandler fail to support java.sql.Date() Fixes DBUTILS-1. bayard
update ResultSetRowProcessor abstract handler and some classes rework Fixes DBUTILS-16. bayard
fix Setting bean properties fails silently Fixes DBUTILS-3. bayard
fix MockResultSet needs to handle equals and hashCode Fixes DBUTILS-9. dgraham
fix MockResultSet: Throw UnsupportedOperationException for not implemented methods Fixes DBUTILS-7. bayard
add Implement Pluggable Adaptors to Make BeanHandler Smarter Fixes DBUTILS-20. dgraham
update Patch for extending BasicRowProcessor Fixes DBUTILS-15. dgraham
add Protected QueryRunner.close() methods Fixes DBUTILS-12. dgraham
update Updated docs for example.html page (select AS) Fixes DBUTILS-23. dgraham
add Added protected ResultSetIterator.rethrow() method to wrap SQLExceptions in RuntimeExceptions. Fixes DBUTILS-4. dgraham
update Added SQLState and error code to rethrown SQLExceptions. Fixes DBUTILS-5. dgraham
add Added KeyedHandler to create a Map of Maps from a ResultSet. Fixes DBUTILS-25. dgraham
update Use current class' ClassLoader instead of QueryLoader's ClassLoader in loadQueries(). Fixes DBUTILS-2. dgraham
update Made QueryLoader.loadQueries() protected so subclasses can use query repositories other than properties files. Fixes DBUTILS-22. dgraham
update QueryRunner now calls getDataSource() internally any time it needs access to its DataSource object to allow subclasses to provide different behavior. dgraham
add Added DbUtils.rollbackAndClose() and DbUtils.rollbackAndCloseQuietly(). dgraham
update Call ResultSet.getTimestamp() in BeanProcessor.processColumn() if the bean property is a java.sql.Timestamp. Oracle's getObject() implementation returns its own incompatible Timestamp class. Fixes DBUTILS-26. dgraham
update Changed QueryRunner.fillStatement() null handling to use Types.VARCHAR instead of Types.OTHER. This works for the following tested drivers: Firebird 1.5/firebirdsql 1.5RC3, Oracle 9/ Thin driver, MySQL 4.0/Msql Connecttor 3.0 and mm.mysql 2.0.4 MaxDB 7.5, HSQLDB 1.7.1, and MS Access/ODBC Bridge. Fixes DBUTILS-18. dgraham
add Added a protected QueryRunner.prepareConnection() method to allow subclasses to customize the Connections retrieved from the DataSource before they're used. Fixes DBUTILS-21. dgraham
add Refactored bean handling from BasicRowProcessor into new BeanProcessor class. This also fixes the common problem with Oracle NUMERIC fields not being set into bean properties. dgraham
add Added QueryRunner.batch() methods for batch updates. Fixes DBUTILS-13. dgraham
add Added new ResultSetHandler implementation, ColumnListHandler, that converts one ResultSet column into a List of Objects. Fixes DBUTILS-11. dgraham

Release 1.0 - 2003-11-10

Type Changes By
add This is the first release of the Commons DbUtils package. DbUtils is a small set of classes designed to make working with JDBC easier.
add QueryRunner class with ResultSetHandler interface allow you to easily query or update a database and handle the ResultSet. Several useful implementations of the ResultSetHandler interface are located in the org.apache.commons.dbutils.handlers.* package.
add ResultSet wrappers that decorate ResultSets with specialized behavior. See the classes in the org.apache.commons.dbutils.wrappers.* package for details.
add Dynamic JDBC API interface implementations via the standard java.lang.reflect.Proxy class. This allows you to implement JDBC interfaces such as ResultSet at runtime to avoid API version incompatibilities. See org.apache.commons.dbutils.ProxyFactory for details.