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();
        }
  • 相关阅读:
    JSON 数据格式
    Get,Post请求中文乱码问题有效解决方法
    linux下tomcat的配置及项目的部署流程
    tomcat部署javaweb项目的三种方式
    tomcat-users.xml 配置
    在linux下用tomcat部署java web项目的过程与注意事项
    Linux服务器上的tomcat中部署web项目
    用yum快速搭建LAMP平台
    开源邮件系统Zimbra Collaboration – Open Source Edition
    PVID和VID彻底研究(上) ——PVID的作用及和VID的区别
  • 原文地址:https://www.cnblogs.com/walk-the-Line/p/5647240.html
Copyright © 2011-2022 走看看