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
分享到:
相关推荐
chapter1:第1章的源程序可使用Jdk1.3以上的任何版本编译和运行,命令运行商品库存管理系统 的命令格式为:java chapter1. MainFrame。 <br> chapter2:第2章的主类是Simulator,运行环境同第1章,也可以在...
现在,ManagedBass是按每个AddOn拆分的一组软件包提供的。 入门 安装NuGet软件包 Install-Package ManagedBass 从下载BASS库,并将它们放在Build Output Directory中。 有关更多信息,请参见 。 变更日志 v3.0 ...
DataFrame iloc练习.ipynb
plc
制造企业数字化中台(技术中台、数据中台、业务中台)建设方案.pptx
实验二 预习报告.docx
20240702作业1
浅谈PLC在自动洗车系统中的应用.doc
Lengstorf, Hansen, Prettyman -- PHP 8 for Absolute Beginners -- 2022
智慧校园建设是在国家政策推动下,为深化教育改革、提升教育质量和管理效率而提出的重要项目。该项目旨在通过信息化手段,解决传统教育中存在的资源分散、管理混乱等问题,实现教育资源的高效利用和教学质量的全面提升。 目前,教育信息化虽取得一定进展,但面临“孤岛架构”的挑战,包括硬件资源无法共享、数据孤岛、应用孤岛等问题,导致资源浪费和管理效率低下。为此,智慧校园的建设目标聚焦于家校沟通便捷化、校园管理科学化、校园生活轻松化、课堂教学互动化和校园设施智能化,以提高教学效率和学生学习体验。 智慧校园的核心价值在于构建先进的网络教学平台和管理信息系统,实现教学资源的高效配置和利用,促进师生互动,提高管理效率,降低成本,构建健康高雅的生活环境。解决方案涵盖综合应用平台规划、系统架构设计、媒体发布、数字会议系统等,通过后台服务层、基础接入层和用户接入层的有机结合,实现智慧校园的全面功能。 智慧校园管理平台作为核心组成部分,提供模块化体系,包括公开课、直播、教学资源等23大应用,支持与第三方接口对接,实现多级管理。电教预约管理平台通过移动端APP或web后台简化预约流程,提高教室和会议室资源利用率,支持会议预订、审批、信息发布和环境管控。 教育录播系统和云平台支持教师制作和分享优质教学资源,进行在线组卷和评卷,同时提供学生应用,如高清视频录制、在线直播和互动交流,促进教学资源的共享和教育均衡化发展。这些系统的整合应用,将极大地推动教育信息化进程,实现教育资源的最大化利用和教育质量的全面提升。
c#输出文字5行5列随机组合代码
制造集团企业供应链整体方案含数字化.pptx
皮带运输机PLC电气控制系统设计.doc
Солем -- Программирование компьютерного зрения на языке Python -- 2016
2022-2028全球与中国GaAs器件市场现状及未来发展趋势.docx
Reitz, Schlusser -- The Hitchhiker's Guide to Python -- 2016
当然可以!以下是一些JavaScript语言教程、案例和相关项目资源的推荐: 教程资源: MDN Web 文档:MDN提供了JavaScript的全面教程,包括语法、数据类型、函数、面向对象编程等内容。 JavaScript 教程 - 廖雪峰:廖雪峰的网站提供了简洁明了的JavaScript教程,适合初学者入门。 W3Schools JavaScript 教程:W3Schools是一个广为人知的Web开发教程网站,提供了丰富的JavaScript教程和示例。 案例资源: JavaScript30:由 Wes Bos 创作的免费 JavaScript 30 天挑战,每天一个小项目,涵盖了各种 JavaScript 技术和 API。 CodePen:CodePen是一个在线社区,提供了大量的前端开发案例,你可以在这里找到各种JavaScript项目的示例和代码。 相关项目资源: GitHub:GitHub是一个代码托管平台,你可以在上面找到各种JavaScript项目和库,可以通过搜索关键词来发现你感兴趣的项目。 Awesome JavaScript:这是一个GitHub仓库,收集
pycharm安装教程