现在ORM框架很多,什么Hibernate,ibatis等等。
Hibernate是提供了便利的方法来自动生成sql,帮你做了很多事情,但是你要花大量时间去学习那该死的,难记的,复杂的hsql语言,我业内的朋友也在向我抱怨,什么one-to-one,one-to-many,many-to-many,any等,把对象关系写在hbm文件里,自己看了都想吐.还不如自己写sql.
其实Hibernate还做了一级缓存(启用),二级缓存(默认未启用),如果你做批量操作,悲剧来了,OOM是正常的,因为缓存了太多的对象。
其实ibatis是不错的选择,半自动,可以自己写sql,最好帮你吧结果集设置到对象属性中,所以这个框架用的还是很多的.
以上两个框架就是最流行的ORM,那么如果我想更简单一点,我不要xml配置文件,我不要配置属性与数据库对象的映射, 那么选择commons-dbutils.
基于逻辑分离,我这里也把sql放到单独的文件中.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>ENTITY event, TABLE events</comment>
<entry key="eventsSequnce">
EVENTS_SEQUENCE
</entry>
<entry key="queryEvents">
SELECT event_id,event_date,title FROM events
</entry>
<entry key="queryEventById">
SELECT event_id,event_date,title FROM events WHERE event_id = ?
</entry>
<entry key="deleteEvent">
DELETE events WHERE event_id = ?
</entry>
<entry key="updateEvent">
UPDATE events SET event_date = ?, title = ? WHERE event_id = ?
</entry>
<entry key="insertEvent">
INSERT into events(event_id,event_date,title) VALUES(?,?,?)
</entry>
</properties>
这就是Property的xml结构,用xml格式能够清晰一点。 接下来加载使用。
public Map<String, String> loadQueries(String path){
QueryLoader ql = QueryLoader.instance();
Map<String, String> queries = new HashMap<String, String>();
try {
queries = ql.load(path);
} catch (IOException e) {
throw new RuntimeException("Load Queries fail, ["+path+"]");
}
return queries;
}
这是dbutils提供的属性文件加载类,返回Map<key,sql>,这样我们使用的时候只需要get就可以了。
接下来演示一个搜索并把结果集设置到对象的例子
public <T> T queryBean(String sql, final Class<T> clazz,final Map<String, String> columnToPropertyOverrides,Object...params) throws SQLException {
ResultSetHandler<T> rsh = new ResultSetHandler<T>(){
@Override
public T handle(ResultSet rs) throws SQLException {
BeanProcessor bp = new BeanProcessor(columnToPropertyOverrides);
if(rs.next()){
return bp.toBean(rs, clazz);
}
return null;
}
};
return queryRunner.query(sql, rsh, params)
}
这里我建了一个ResultSetHandler,故名思义,就是转化结果集的。 属性到字段的映射,如果一样的话,不需要配置,如果不一样,可以columntoProperty overrride.
还有这是一个泛型方法,支持所有类型哦。
例子就不发了,加载sql, 然后但用执行。
每一个DAO都加载属于自己的xml,并且通过简单的文件维护来获取. 这里的key随便定义,最好是DAO方法名,这样可以方便维护,每一个DAO的方法对应一条Sql语句, 再加上以上的简单QueryRunner(执行器).
分享到:
相关推荐
赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...
这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-sources.jar`。 `commons-dbutils-1.6.jar`是运行时库,它提供了大量的静态方法来处理数据库操作。这个库的核心...
- `commons-dbutils-1.6.jar`: 相对于1.3版,可能会有性能改进、bug修复和新功能的添加。 - `commons-dbutils-1.7.jar`: 最新版本,通常会提供更好的兼容性和更多的改进。 5. **使用场景** DBUtils适用于那些...
这个项目的最新版本为"commons-dbutils-1.4.jar",它的主要目标是减轻开发人员在处理数据库连接、查询结果集等方面的负担,让Java程序员能够更加专注于业务逻辑,而不是底层的数据库交互细节。 DBUtils的核心设计...
这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。DBUtils的核心理念是通过提供实用程序类来消除JDBC的繁琐和易错性,使开发人员能够更专注...
commons-dbutils-1.8.1.jar
这个"commons-dbutils-1.5"版本是DBUtils项目的早期稳定版本,它包含了对早期JDBC API的良好封装,旨在减少代码量并提高容错性。 DBUtils的核心设计理念是基于数据库操作的事务管理和异常处理,它通过简化常见任务...
这个"commons-dbutils-1.4 bin+src"压缩包包含两个关键文件:`commons-dbutils-1.4-sources.jar`和`commons-dbutils-1.4.jar`。 1. `commons-dbutils-1.4.jar`: 这是DBUtils库的二进制版本,包含了编译后的Java类...
这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,旨在提供一个简单、安全的方式来处理数据库操作,减少与数据库交互时出现的常见错误。 DBUtils的核心...
commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改...
1. **commons-dbutils-1.3**: Commons-DbUtils是Apache的一个开源项目,它提供了一个简单且实用的数据库操作工具包。DbUtils的主要功能包括:连接池管理、SQL执行、结果集处理等。DbUtils与JDBC结合使用,可以避免...
commons-dbutils-1.5.jar
commons-dbutils-1.7.jar,commons-dbutils-1.7-javadoc.jar,commons-dbutils-1.7-sources.jar,commons-dbutils-1.7-tests.jar,commons-dbutils-1.7-test-sources.jar
commons-dbutils-1.6.jar
commons-dbutils-1.7.jar 最新
这个"commons-dbutils-1.3"版本是该库的一个早期版本,但仍然在许多项目中广泛使用,因为它提供了一些核心功能,比如查询结果的处理和异常处理。 DBUtils的核心功能主要包括以下几个方面: 1. **结果集处理**:...
commons-dbutils.jar是在java架构开发时十分重要的一款.jar包,正确的使用commons dbutils可以让你的开发事半功倍,如果您在开发过程中缺少这款jar包,马上来下载commonsdbutils jar包吧! 软件功能: commons-...