zoukankan      html  css  js  c++  java
  • Hibernate4 执行存储过程

    Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作

    当Hibernate的事务由Spring接管时,session的关闭由Spring管理.不用手动关闭,否则需要手动关闭

    1、执行带输出参数存储过程

    /**
         * 执行带输出参数存储过程
         * @param callSql
         * @param inParameters
         */
        public String prepareCallAndReturn(final String callSql,final Object... inParameters){
            Session session = getSession();
            return session.doReturningWork(new ReturningWork<String>() {
                @Override
                public String execute(Connection connection) throws SQLException {
                    CallableStatement cs = connection.prepareCall(callSql);
                    int inParametersLength = inParameters.length;
                    for(int i=0;i<inParametersLength;i++){
                        cs.setObject(i+1, inParameters[i]);
                    }
                    cs.registerOutParameter(inParametersLength+1,Types.VARCHAR);
                    cs.executeUpdate();
                    return cs.getString(inParametersLength+1);
                }
            });
        }

    2、执行不带输出参数存储过程

    /**
         * 执行不带参数存储过程
         * @param callSql
         * @param inParameters
         */
        public void prepareCallNoReturn(final String callSql,final Object... inParameters){
            Session session = getSession();
            session.doWork(new Work() {
                @Override
                public void execute(Connection connection) throws SQLException {
                    CallableStatement cs = connection.prepareCall(callSql);
                    int inParametersLength = inParameters.length;
                    for(int i=0;i<inParametersLength;i++){
                        cs.setObject(i+1, inParameters[i]);
                    }
                    cs.executeUpdate();
                }
            });
        }
    /**
         * 执行只有输入参数存储过程
         * @param callSql {call p_datasync(?)}
         * @param syncTimeType
         */
        private void callPro(final String callSql, final String syncTimeType){
            SQLQuery sqlQuery = getSession().createSQLQuery(callSql);
            sqlQuery.setString(0, syncTimeType);
            sqlQuery.executeUpdate();
        }
  • 相关阅读:
    当前流行的智能硬件产品整理
    一个桌面视频录制利器推荐--Snagit
    微信支付---退款的坑
    微信支付退款证书服务器配置
    Git安装和TortoiseGit详细使用教程【基础篇】
    通俗易懂,什么是.NET Core以及.NET Core能做什么
    向ASP.NET Core迁移
    SQLServer 查看SQL语句的执行时间
    SqlServer 2014 Enterprise 企业版下载与安装教程(附图片)
    SQL Server表分区
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5647240.html
Copyright © 2011-2022 走看看