现在建立dowork的实现类:
package com.starshine.util;
import java.sql.Connection;
import java.sql.SQLException;
import org.hibernate.jdbc.Work;
public class DoWork implements Work{
private Connection connection;
public void execute(Connection con) throws SQLException {
connection=con;
}
public Connection getConnection() {
return connection;
}
}
再添加一个获取connection的方法
package com.starshine.util;
import java.sql.Connection;
import org.hibernate.Session;
public class HibernateConnection {
public static Connection getConnection(){
Session session = HibernateSessionFactory.getSession();
DoWork work=new DoWork();
session.doWork(work);
Connection con = work.getConnection();
return con;
}
}
实例类:
package com.starshine.util;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
public class CallTest {
//单输入参数的储存过程
/*@SuppressWarnings("deprecation")
public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Connection con = session.connection();
String sql = "{call getUserById(?)}";
try {
CallableStatement cs = con.prepareCall(sql);
cs.setObject(1, 71);
ResultSet rs = cs.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println(id+"\t"+name);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(session!=null&&session.isOpen()){
session.close();
}
}
}*/
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
Connection con = HibernateConnection.getConnection();//这个con不能关闭,否则报异常。
final String sql = "{call getUserNameById(?,?)}";
CallableStatement cs;
try {
cs = con.prepareCall(sql);
cs.setObject(1, 192);
cs.registerOutParameter(2, java.sql.Types.VARCHAR); // 设置第二个参数为输出参数
cs.execute(); // 调用存储过程
String name = cs.getString(2);// 获取输出参数
System.out.println(name);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
}