论坛首页 Java企业应用论坛

关于dao-zero的版本升级(以后dao-zero的消息)

浏览 19693 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-05-22  
DAO
以后关于dao-zero的版本升级等的消息都放到这个新开的帖子了。
刚刚上传0.3.1版到sourceforge上(http://dao-zero.sourceforge.net),下载地址是http://sourceforge.net/project/showfiles.php?group_id=164840。主要是加入了对RowHandler的支持,并更新了文档/tutorial,具体大家可以到项目主页上去看。

最初的对dao-zero的想法和叙述见http://forum.iteye.com/viewtopic.php?t=19732&start=0&postdays=0&postorder=asc&highlight=
   发表时间:2006-05-23  
我自己已经计划好的是:
(1)增加对queryForPaginatedList()和queryForMap的支持,这两个特性完成以后对iBatis API的支持就基本上算是完整了;
(2)内部实现上准备统一到使用cglib上;

可能的话还想:
(1)把dao层一些其他常见代码(例如参数验证和SQL过滤)也放到dao-zero的代理中去
(2)研究一下是否也为hibernate做个类似的东西(也顺便深入学习一下hibernate)
(3)做到不依赖于spring
(4)ejb3 ......
0 请登录后投票
   发表时间:2006-05-29  
支不支持
public List queryForList(String statementName, Object parameterObject, int skipResults, int maxResults);
0 请登录后投票
   发表时间:2006-05-29  
squall 写道
支不支持
public List queryForList(String statementName, Object parameterObject, int skipResults, int maxResults);

目前还不支持。我考虑有两个替代方案:
(1)使用SQL自己的分页,大数据量时性能相对更好
(2)自己写DAO的这个方法的实现代码,而其他部分用dao-zero做,具体可以参见http://dao-zero.sourceforge.net/index_zh_cn.html#content_6

我确实也在考虑加入这个特性(包括PaginatedList),问题在于怎么加才用起来简单。一个方案是直接约定将method的后两个int参数作为skipResults和maxResults,另一个方案是用annotation指定,可都觉得不够理想,如果你有什么想法可以帮助我一下就太好了。
现在的版本这个并没有把这个特性以很高优先级考虑,因为认为大家用ibatis时都是用sql分页的,这个特性用得很少,想当然了,抱歉
0 请登录后投票
   发表时间:2006-05-29  
最近也开始用ibatis,有个简单的生成工具。input目录里是定义,output里是输出。
http://dwangel.mudfans.cn/wp-content/uploads/2006/05/gentool-share.zip
包含支持库了。
可以根据定义预先生成一些SqlMapping。

不过,我用的是自己GenericDAO。

考虑是否可以加上类似我的这样根据模版生成功能。
可以少写点东西而已。
0 请登录后投票
   发表时间:2006-05-29  
dwangel 写道
最近也开始用ibatis,有个简单的生成工具。input目录里是定义,output里是输出。
http://dwangel.mudfans.cn/wp-content/uploads/2006/05/gentool-share.zip
包含支持库了。
可以根据定义预先生成一些SqlMapping。

不过,我用的是自己GenericDAO。

考虑是否可以加上类似我的这样根据模版生成功能。
可以少写点东西而已。


能具体说一下怎么加吗?
粗看下来gentool应该是个类似abator的ibatis dao代码生成工具,而dao-zero是运行时的动态实现,不是编译前的代码生成,和代码生成工具的出发点不一样
0 请登录后投票
   发表时间:2006-05-30  
我看了看daozero的代码,觉得代码写得太复杂了重构了一部份。
daozero中每种statement都给了两种实现,其中一种mapped是参数大于一个的时候使用的,没有看出来它的用途,请指点
0 请登录后投票
   发表时间:2006-05-30  
squall 写道
我看了看daozero的代码,觉得代码写得太复杂了重构了一部份。
daozero中每种statement都给了两种实现,其中一种mapped是参数大于一个的时候使用的,没有看出来它的用途,请指点

mapped的意思是参数多于1个的时候,得new一个Map来作为参数传给ibatis。
举个例子,有3个DAO方法:
(1)List findAccountsByDepositAndLoan(  String _deposit, String _loan );
(2)List findAccounts(  AccountInfo _account );
(3)List findAccountsByDeposit(  String _deposit );
这时非mapped是用来处理(2)和(3)的,mapped是用来处理(1)的。

代码是写得不好,因为有了这个想法就花了几个小时匆匆忙忙地做了试试看,再后来一直在补充功能和考虑新特性的使用方便性,所以也没去重构。
欢迎重构!源码中已经有比较充分的test case,放心做好了,有问题可以MSN联系。如果你有兴趣,我们一起做。
0 请登录后投票
   发表时间:2006-05-30  
msn: squall_like@hotmail.com
0 请登录后投票
   发表时间:2006-05-31  
非常感谢squall贡献了他refactor的daozero的代码,我把它们合并进了0.3.2版。
下载地址是http://sourceforge.net/project/showfiles.php?group_id=164840

0.3.2版还更新了一下文档中的错误,因为文档第4部分的AccountDaoImpl类应该是继承自SqlMapClientDaoSupport的,漏写了。

顺便说一下版本号,是这样定的:0.x.y,x递增代表新特性的追加,y表示bug修改或内部代码的改进。

现在正在做的是加入对queryForPaginatedList()和分页情况下的queryForList(String,Object,int,int)的直接支持,准备发布在0.4版中。


另外,也在考虑这两件事:
1. 把daozero往完整的dao层工具发展,就是说与大家常用的dao层代码生成工具结合起来,一方面把代码生成工具做得到的特性尽可能放到daozero的运行时bean中,另一方面是把剩下的做在代码生成工具里。大家一下如何?或者讨论一下dao代码生成工具可以怎么做,可以做进哪些功能?
2.让dao-zero支持传入参数允许混合使用map,bean和java基本类,更夸张点的,还可以允许直接(混合)使用HttpSession和HttpRequest,还有struts的动态bean,这样就可以省掉在action里提取装配查询参数的代码,这个主意怎么样?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics