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();
        }
  • 相关阅读:
    随意记的一点 js 笔记
    关于 <video> 的兼容性测试
    placeholder 兼容 IE
    固定高度的多行文字垂直居中
    CSS 实现底部固定
    python学习之路基础篇(三)
    PyChram简单使用教程
    三级菜单的实现
    python序列化pickle/cPickle
    python解析json文件之简介
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5647240.html
Copyright © 2011-2022 走看看