Hibernate4 针对存储过程的接口封装
来源:互联网 发布:网络社区是什么意思 编辑:程序博客网 时间:2024/04/30 19:09
1、首先对 org.hibernate.jdbc.Work 接口封装
package com.cms.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.jdbc.Work;
public abstract class ProWork implements Work{
private String proSql; //存储过程语句
private ResultSet rs = null; //返回结果集
private Map pro = new HashMap(); //存储过程涉及参数
@Override
public abstract void execute(Connection conn) throwsSQLException;
public ProWork(String proSql,Object... params){
this.proSql = proSql;
int i=1;
for(Object obj:params){
pro.put(i, obj);
i++;
}
}
public void setParams(Integer key,Object value){
pro.put(key, value);
}
public String getProSql() {
return proSql;
}
public void setProSql(String proSql) {
this.proSql = proSql;
}
public Object getParams(Integer key){
return pro.get(key);
}
public ResultSet getRs() {
return rs;
}
public void setRs(ResultSet rs) {
this.rs = rs;
}
}
2、在 Dao 实现类中方法
public ResultSet executeProRs(ProWork work){
Session session = sessionFactory.getCurrentSession();
session.doWork(work);
return work.getRs();
}
3、在service 层中调用 dao
ResultSet rs = gdi.executeProRs(new ProWork("{call******.*********(?,?)}","2013-12-03"){
//新建ProWork 抽象类 ,第一个参数为存储过程调用语句,之后的参数为不定长参数。游标参数不用传入!
//实现ProWork 抽象方法。
@Override
public void execute(Connection conn) throws SQLException{
// TODO Auto-generated method stub
CallableStatement statement =conn.prepareCall(this.getProSql());
//为存储过程设置参数,用this.getParams(Index ) 获取传入参数。
statement.setString(1, this.getParams(1).toString());
statement.registerOutParameter(2, OracleTypes.CURSOR);
statement.execute();
//将存储过程返回游标结果赋值给ResultSet.
this.setRs((ResultSet) statement.getObject(2));
}
});
转自: http://blog.sina.com.cn/s/blog_49dff6130101ij37.html
0 0
- Hibernate4 针对存储过程的接口封装
- Hibernate4.x执行mysql的存储过程
- 针对 .NET 开发人员的存储过程评估
- 针对 .NET 开发人员的存储过程评估
- 针对 .NET 开发人员的存储过程评估
- 针对 .NET 开发人员的存储过程评估
- 针对 .NET 开发人员的存储过程评估
- 针对sql 2005的分页存储过程
- 针对sql 2005的分页存储过程 .
- hibernate4存储过程调用笔记
- hibernate4连接Oracle带out参数的存储过程调用
- Hibernate4工具类的封装
- 针对 .NET 开发人员的存储过程评估 [转载]
- 针对分页存储过程调用的C#类
- 针对sql 2005优化的高性能分页存储过程
- 【代码生成】针对单表生成CRUD的存储过程
- 触发器、存储过程的使用(针对Mysql)
- mysql编写存储过程hibernate4调用
- 岁月匆匆,总要留下点什么吧
- 搜索引擎使用
- c/c++混编,导出接口给lua调用
- javaweb学习总结(二十九)——EL表达式
- javaweb学习总结(三十)——EL函数库
- Hibernate4 针对存储过程的接口封装
- Lua中table类型的源码实现
- Docker客户端与守护进程
- LeetCode--No.191--Number of 1 Bits--哎有点地方想不通
- javaweb学习总结(三十一)——国际化(i18n)
- Linux 下 C/C++混合编程
- Android 进程保活
- S域到Z域转换(前向积分公式,后向积分公式,双线性变换)
- 51Nod-1265-四点共面