第一种,传入一个参数,做更新或者删除操作,没有返回值(hibernate形式的)
SQLQuery sqlQuery = this.getSession().createSQLQuery("{call updUser(?)}");
sqlQuery.setInteger(0, 4);
sqlQuery.executeUpdate();
第二种,hibernate框架下调用jdbc模式
1、返回结果为结果集的,但没有输出参数
Connection conn = (Connection) SessionFactoryUtils.getDataSource(sessionfactory).getConnection();
//获得connection对象
CallableStatement sp;
sp = conn.prepareCall("{call baseweb.land_procedure1(?)}"); //调用存储过程
sp.setString(1, "201440509"); //向存储过程传递有参的参数(参数为字符串类型),1代表第一个参数
// sp.setInt(2,12); //传递整形的参数
sp.execute(); // 执行存储过程
ResultSet rs=sp.getResultSet(); //获得结果集
List<landprocedure> listTemp= new ArrayList<landprocedure>(); //定义一个相应类型的list集合去接受
while (rs.next()) {
landprocedure lp = new landprocedure(); //实例化一个相应结果集类型的JavaBean
lp.setLid(rs.getInt("la_id"));
lp.setBname(rs.getString("bname"));
lp.setStartTime(rs.getString("startTime"));
lp.setEndTime(rs.getString("endTime"));
lp.setTimes(rs.getInt("times"));
lp.setApplicantId(rs.getString("applicantId"));
lp.setLa_id(rs.getInt("la_id"));
lp.setStatus(rs.getInt("status"));
System.out.println(rs.getString("bname"));
listTemp.add(lp);
}
if(rs!=null) //关闭连接
{
rs.close();
}
if(sp!=null)
{
sp.close();
}
if(conn!=null)
{
conn.close();
}
2、存储过程有输出参数的
同上
sp = conn.prepareCall("{CALL baseweb.`user_login1`(?,?,?)}"); //调用存储过程
sp.setString(1, "20142202"); //向存储过程传递有参的参数(参数为字符串类型),1代表第一个参数
sp.setString(2, "123456");
sp.registerOutParameter(3,java.sql.Types.INTEGER); //发送输出参数的类型
//3为参数的位置,后面那个参数为输出参数的类型(整形)
sp.execute(); // 执行存储过程
int flag=sp.getInt(3);