强大的JDBC操作组件DBASS1.0发布第一个预览版

  DBASS 是一个使用泛型技术的一系列 JDBC 工具类库。它参考了 Commons DBUtils 的实现。加入了一个通用的 DAO ,提供了不错的 JDBC 操作 API (类似于 Spring 的 JDBCTemplate ),包括通用的多数据库支持的分页查询方案等等。也提供了一个非常简单易用的基于注解的事务管理方案。至于为什么要重新发明这个轮子。这是因为 Commons DBUtils 过于简单, Spring 的 JDBCTemplate需要 依赖于庞大的 Spring 。由于 Cwin 需要以插件形式运行使得它并不适合要求。现在的 DBASS 版本体形控制得不错,只有 20 多 Kb 。此版本支持mssql,mysql,oracle,postgresql。

现在刚刚发布1.0版,请各位大大给些评论,提些建议。多谢了。

集成 DBASS

DBASS 的集成很简单,只需要提供一个数据库类型和一个数据源。

您可以提供一个名叫 dbass.properties 的配置文件(这个文件可以在下载的包中找到)来提供数据源。如果你感觉:啊?又多一个配置文件!我们系统已经在其它地方配置过数据源了!那么,您可以使用一行代码来完成初始化。选择全在您的手上。

通过调用 cn.antia.db.DbUtils 的静态方法 . public static void init(String dbType,DataSource dataSource) 可以完成初始化。dbType可以为相个可选值中的一个:mssql,mysql,oracle,postgre。

在完成初始化以后,就可以在应用程序中调用下面介绍的 API 了。

 

依赖组件:

如果您需要使用基于注解的事务支持,将依赖于 AspectJ1.5+ 。当然我们建议您使用基于注解的事务。因为它使用起来的确很方便。

否则, DBASS 不依赖于任何第三方组件。

CommonDAO 的介绍

cn.antia.db. CommonDAO 类提供了较为全面的数据库操作方法。提供了一个数据库透明的分页查询解决方案。以下是 CommonDAO 的常用方法列表:


int gtRecordCount(SqlParams sqlParams)

int getRecordCount(String sql)

<T> List<T> queryFirstField(SqlParams sqlParams)

<T> List<T> queryFirstField(String sql)

Map<String,Object> queryFirstMap(SqlParams sqlParams)

Map<String,Object> queryFirstMap(String sql)

<T> T queryFirstObject(SqlParams sqlParams)

<T> T queryFirstObject(String sql)

<T> List<T> queryList(SqlParams sqlParams, Class<T> clazz)

<T> List<T> queryList(SqlParams sqlParams, int page, int pageSize, String orderField, boolean isAsc, Class<T> clazz)

<T> List<T> queryList(String sql, Class<T> clazz)

<T> List<T> queryList(String sql, int page, int pageSize, String orderField, boolean isAsc, Class<T> clazz)

List<Map<String,Object>> queryListMap(SqlParams sqlParams)

List<Map<String,Object>> queryListMap(SqlParams sqlParams, int page, int pageSize, String orderField, boolean isAsc)

List<Map<String,Object>> queryListMap(String sql)

List<Map<String,Object>> queryListMap(String sql, int page, int pageSize, String orderField, boolean isAsc)

<K,T> Map<K,T> queryMap(SqlParams sqlParams) //MAP:以第一列为KEY,第二列为VALUE

<K,T> Map<K,T> queryMap(String sql)

<T> T queryObject(SqlParams sqlParams, Class<T> clazz)

<T> T queryObject(String sql, Class<T> clazz)

int update(SqlParams sqlParams)

int update(String sql)

boolean runSql(String sql)


其中 SqlParams 对象封装了带问号(占位符)的 SQL 语句与参数数组。

DbUtils 的使用

DBASS 提供的 DbUtils 最开始的版本是与 Apache Commons DbUtil 的 DbUtils 类是一致的。提供了一些打开与关闭连接之类的方法。另外增加了一些方法,不过这些方法对于用户来说是无关紧要的。

事务的使用与 TransactionUtils

DBASS 提供了基于注释的事务支持。支持事务嵌套。

事务的配置很简单:如果您的某个方法需要事务支持。只需在方法前面加入一个注释即可。

事务注释: cn.antia.dn. AssTranscation

例如:

@AssTranscation
public int deleteUser(…){…} 

是不是很简单呢。

 

如果您想手动控制事务的话。 TransactionUtils 为事务的支持提供了一组静态方法。一般使用事务只需关注三个方法即可:

begin ();        开始一个事务。如果在调用此方法之前当前线程正在事务当中,那么将不再打开新的事务。而只是将后面的操作加入到已经存在的事务中。

commit();              提交事务。

rollback();     回滚事务。

rollback(Throwable e);       回滚事务,参数为引发回滚的异常

TransactionUtils 的其它方法包括:

isInTransaction():        当前线程是否在事务中

isConnInTransaction():      此数据库连接是否在事务中

currentConnection():  取得当前线程的数据库连接

 

TransactionUtils 使用示例:

void test(){

TransactionUtils.begin();
    try{
        String sql = "update address set borough = '000000000' where id = 2";
        CommonDAO.update(sql);

        sql = "update address set borough = '000000000' where id = 3";
        CommonDAO.update(sql);
    }catch(Exception e){
        TransactionUtils.rollback(e);
        return;
    }
TransactionUtils.commit();
}

注意: TransactionUtils 的事务支持需要与 CommonDAO 或者 DbUtils 配合使用。这里的 CommonDAO 或者 DbUtils 中 “ 或者 ” 的意思是指:要么您使用 CommonDAO 来完成操作。要么您使用 DbUtils 来获取与关闭 DB Connection 。因为 TransactionUtils 无法管理从其它地方取到的 DB Connection 。

注意:如果事务回滚, TransactionUtils 将会在事务回滚之后抛出一个运行时异常。以告知业务方法的调用者。


在此下载DBASS1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值