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();
        }
  • 相关阅读:
    不叹惜、不呼唤我也不哭泣
    WCF笔记(一)Service Layer and Channel Layer
    C#数据结构(四)树和二叉树
    Python and django(四)详解python中的数字和序列
    Python and django(三)python中的对象
    IIS与ASP.NET Http Runtime Pipeline
    迈进程序员的大门
    实例学习SSIS(四)使用日志记录和错误流重定向
    DbUtility alpha1版本发布
    关于ref和out的详细区别。
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5647240.html
Copyright © 2011-2022 走看看