Commons DbUtils很一个很好用JDBC工具类,地球人都知道,就不介绍了,不知道的看这里:http://commons.apache.org/dbutils/
在进行查询自动类映射的时候domain类的属性必须和数据库中名称一样,但是如果数据库的表名使用带下划线的设计,domain类中的属性也要使用下划线,看起来很不雅观,而且使用hibernate工具自动生成的domain类会自动去掉下划线,下划线后面的用大写字母,比如user_name转换后为userName,因此有必要让DbUtils支持这种设计。
好,目标已经明确,下来就是开工了!
1、下载DbUtils的源代码
2、找到commons-dbutils-1.2-src\src\java\org\apache\commons\dbutils下的BeanProcessor.java,增加一个函数,代码如下:
private String getPropertyName(String columnName){
StringBuilder sb = new StringBuilder();
boolean match = false;
for (int i=0; i<columnName.length(); i++){
char ch = columnName.charAt(i);
if (match && ch>=97 && ch<=122)
ch -= 32;
if (ch!='_'){
match = false;
sb.append(ch);
}else{
match = true;
}
}
return sb.toString();
}
3、修改mapColumnsToProperties函数,红色部分是修改的地方。
protected int[] mapColumnsToProperties(ResultSetMetaData rsmd,
PropertyDescriptor[] props) throws SQLException {
int cols = rsmd.getColumnCount();
int columnToProperty[] = new int[cols + 1];
Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
for (int col = 1; col <= cols; col++) {
String columnName = getPropertyName(rsmd.getColumnName(col));
for (int i = 0; i < props.length; i++) {
if (columnName.equalsIgnoreCase(props[i].getName())) {
columnToProperty[col] = i;
break;
}
}
}
return columnToProperty;
}
4、mvn package编译,搞定!
懒得编译的同学,直接下载附件吧
分享到:
相关推荐
DBUtils 是一个非常重要的 Python 模块,专为数据库连接设计,它在 Python 的数据库应用开发中扮演着不可或缺的角色。这个模块主要目的是提供一个稳定、健壮的接口,用于管理和操作数据库连接,使得开发者能够更方便...
在DBUtils中,可以通过控制`Connection`对象的自动提交属性来实现对事务的支持。 1. **开启事务**: - 获取`Connection`对象并关闭自动提交。 ```java Connection conn = JdbcUtils.getConnection(); conn....
Dbutils 提供了几种常见的实现,如 `ArrayListHandler`(将结果集转换为 List), `BeanHandler`(将结果集映射到单个Java Bean对象), `BeanListHandler`(将结果集映射到一个Bean的列表)等。开发者可以根据需求...
Python的DBUtils是一个非常实用的库,主要用于增强Python标准库中的`DB-API 2.0`接口,提供了线程安全性和连接池管理等功能。DBUtils是基于PEP 249设计的,它使得数据库连接的管理和维护变得更加简单,尤其在多线程...
1. **批处理操作**:`dbutils` 支持批量执行SQL语句,可以显著提高数据库操作的性能,尤其在处理大量数据时。 2. **QueryRunner与ResultSetHandler**:`QueryRunner` 类是`dbutils` 的核心组件,它提供了一种简单的...
DBUtils提供了一些预定义的实现,如ArrayListHandler将结果集转换为ArrayList,BeanHandler将每一行数据映射到一个Java Bean对象,MapHandler则将每一行数据转换为Map。 3. **BasicRowProcessor**和**...
6. **事务管理**:DbUtils提供简单的事务支持,通过`TransactionManager`类,可以在代码中轻松开启、提交和回滚事务,保证数据的一致性。 在实际项目中,开发者可以结合Spring框架或其他ORM工具(如Hibernate或...
5. **事务管理**: 简易DBUtils可能包含对数据库事务的支持,包括事务的开始、提交和回滚。这对于保证数据的一致性至关重要,尤其是在执行一系列数据库操作时。 6. **批处理**: DBUtils支持批处理操作,允许一次发送...
DButils支持多种数据库连接池,如C3P0、DBCP、HikariCP等。连接池是数据库管理的关键组件,它能够有效地重用数据库连接,减少创建和销毁连接的开销,提高系统性能。通过DButils,开发者可以轻松配置和使用这些连接...
dbutils 提供了一些预定义的实现,如 `ArrayListHandler`(将结果集转换为 ArrayList),`BeanHandler`(将结果行映射到 Java Bean 对象),`MapHandler`(将结果行映射到 Map)等。 - **ConnectionPool**: dbutils...
DbUtils提供了一些预定义的实现,如ArrayListHandler(将结果集转换为List对象)、BeanHandler(将结果集映射到Java Bean)、MapHandler(将结果集映射到Map对象)等,可以根据需求选择合适的Handler。 3. **...
3. **SQL执行**:DbUtils的`QueryRunner`类提供了执行SQL查询和更新操作的方法,支持预编译的PreparedStatement,增强了SQL语句的安全性,防止SQL注入攻击。例如,`QueryRunner.query()`方法用于执行查询,`Query...
1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建...
3. JavaBean映射:DBUtils支持从数据库查询结果自动填充JavaBean对象。这意味着开发者可以轻松将数据表的列映射到Java对象的属性上,这极大地简化了数据对象与数据库表之间的交互。 4. 简洁小巧:DBUtils的体积很小...
3. **ResultSetHandler接口**:DBUtils支持多种结果集处理策略,开发者可以实现这个接口来处理查询结果。内置的处理器如`ArrayListHandler`将结果集转化为ArrayList,`BeanHandler`将结果映射到Java Bean对象。 4. ...
5. 高效的批处理:DBUtils还支持批处理操作,通过`BatchRunner`类可以一次性提交多条SQL语句,提高数据库操作的效率。 在实际项目中,"commons-dbutils-1.4.jar"可以与Apache的另一个项目——Apache Commons DBCP...
1. **连接池管理**:DBUtils支持多种连接池实现,如C3P0、DBCP和HikariCP等。通过配置文件,开发者可以轻松设置连接池参数,实现数据库连接的复用,降低系统资源消耗。 2. **QueryRunner**:QueryRunner是DBUtils的...
Apache Commons DBUtils是Java开发中的一个实用工具库,主要用于简化JDBC(Java Database Connectivity)的使用。这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-...
它支持预编译的PreparedStatement以及批处理操作,可以有效地防止SQL注入攻击。 - **ResultSetHandler**: 提供了一系列预定义的处理结果集的接口和实现,如ListHandler、BeanHandler、ArrayHandler等,可以直接将...
Apache Commons DBUtils是一个Java库,它为数据库操作提供了一些实用工具和帮助类,极大地简化了JDBC编程。...在Java项目中,特别是对于那些不需复杂ORM映射的小型应用,DBUtils是一个理想的选择。