hibernate调用存储过程

第一种,传入一个参数,做更新或者删除操作,没有返回值(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);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值