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();
        }
  • 相关阅读:
    Educational Codeforces Round 20 A. Maximal Binary Matrix(模拟)
    SCU 4440 Rectangle (思维+暴力)
    poj 2799 IP Networks (模拟/水题)
    Uva 10629 Huge Mods (指数循环节)
    FUZ 1759 Super A^B mod C (指数循环节/模板)
    Uva 11149 Power of Matrix (倍增法/模板)
    poj 3863&&Gym
    Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)
    Uva 11029 Leading and Trailing (求n^k前3位和后3位)
    Uva 10006 Carmichael Numbers (快速幂)
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5647240.html
Copyright © 2011-2022 走看看