[讨论]java调用存储过程苦恼的朋友们

sunyujia 2008-05-18 08:02:03
我本身特别痛恨存储过程,但是迫于无奈不得不用,我觉得存储过程最恶心的地方就是:在sqlserver上写完了还要在oracle上重写一遍,恶心至极,还好可以通过工具自动生成但是还是需要手工整理一遍,其实还有一件很恶心的事情就是用java调用存储过程的时候不能保证统一性,因为oracle中的结果集返回形式和sqlserver并不相同,为了解决这个问题,我曾经在spring的基础上搞了个通用的写法,但是觉得依赖spring太麻烦而且还不够灵活于是本周末在jdbc的基础上重写了一个,因为尚且没用在项目中使用不知道是否有其他问题,比如某些情况还没用覆盖到,bug是必然有的了呵呵。
如果大家有感兴趣的话,可以下回去看看,希望大家广开言论。如果有更好想法的朋友们,请分享出来,共同学习进步。分享快乐!

详细介绍
http://blog.csdn.net/sunyujia/archive/2008/05/18/2456325.aspx

下载地址(源码,eclipse工程附依赖包,junit测试和两个库的sql脚本)
http://download.csdn.net/source/459115

下面是一个简单的调用示例

public void test1() {
ProcedureResult result = getSimpleJdbcTemplate().execProcedure("过程名",
new ProcedureCallBack() {//执行返回结果集的过程
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException {
return new Pepole(rs.getString(1));//行结果集的封装
}

public void registerParameter() throws SQLException {
registerOutParameter(1, Types.INTEGER);//out型参数
setInt(2, 9);//过程的参数
addOracleCursor(3);
addOracleCursor(4);
}
});
TestUtil.println(result);
}
public class ProcedureResult {
private List rs = new ArrayList();//一个过程不止可以返回一个ResultSet,这个值是过程返回的n个结果集,其中的每个对象又是一个list(一个ResultSet处理后的集合)
private List output = new ArrayList();//过程的out参数输出值
private Object value;//过程本身的返回值

}


另外来者皆有分。
...全文
404 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
S411911153 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunyujia 的回复:]
引用 3 楼 yaray 的回复:
不建议过多使用存储过程。


没办法公司以前是用dephi写的,目前我们公司有的产品同时使用hibernate,ibatis,jdbc,存储过程,自行研究的db解决方案。
你说多郁闷呵呵。
[/Quote]

同意
alis1017 2008-05-22
  • 打赏
  • 举报
回复
不太喜欢用,呵呵
lifanfly 2008-05-22
  • 打赏
  • 举报
回复
存在的即是合理的,主要还是看怎么用了,帮楼主顶一下
jojoqiong 2008-05-22
  • 打赏
  • 举报
回复
存储过程好处还是很多的,又的时候用java代码写一些

业务方面的很麻烦的

但存储过程可以简单很多哦
chb865 2008-05-22
  • 打赏
  • 举报
回复
支持LZ
w5325698 2008-05-22
  • 打赏
  • 举报
回复
jf
up
ThirdDimension 2008-05-22
  • 打赏
  • 举报
回复
来的有点晚,向孙哥学习。呵呵
xql80329 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jdlsfl 的回复:]
学习了
[/Quote]
xql80329 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jdlsfl 的回复:]
支持搂主的精神
[/Quote]
ZX_ARES 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yaray 的回复:]
不建议过多使用存储过程。
[/Quote]
这个嘛,没有什么一定之规吧!
要看具体的情况。
bt_lose 2008-05-21
  • 打赏
  • 举报
回复
up
Trice_Xie 2008-05-21
  • 打赏
  • 举报
回复
以前学习过存储过程,但是一直都很少用.
sunyujia 2008-05-21
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 java2000_net 的回复:]
支持一个,对了,楼主你在我的QQ群里吗?不在的话联系我!
[/Quote]

我不在qq群,不过在你论坛里面注册了噢呵呵,你应该知道我是第一批会员,偶尔去看看不过不常登录。我一会给你私信吧。
我不常开qq,没有上班闲聊的习惯,周末有时会上。
xteo27 2008-05-21
  • 打赏
  • 举报
回复
有些同感,我们写的时候不光要写oracle,sqlserver还要写mysql,崩溃了,公司要求.....
zhj92lxs 2008-05-21
  • 打赏
  • 举报
回复
支持
老紫竹 2008-05-21
  • 打赏
  • 举报
回复
支持一个,对了,楼主你在我的QQ群里吗?不在的话联系我!
burningice44 2008-05-21
  • 打赏
  • 举报
回复
up up up up
王武Wangwu 2008-05-21
  • 打赏
  • 举报
回复
来此学习~
yangzi1028 2008-05-21
  • 打赏
  • 举报
回复
我们现在做的项目也在用存储过程!和楼主一样我对存储过程也不感冒!!o(∩_∩)o...
刘彬彬 2008-05-21
  • 打赏
  • 举报
回复
我们现在老师也在将JDBC怎么调用存储过程.不是很懂!
向孙大哥学习了...
加载更多回复(20)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧