设为首页 收藏本站
查看: 907|回复: 0

[经验分享] java 程序调用Oracle Function

[复制链接]

尚未签到

发表于 2018-9-26 08:28:30 | 显示全部楼层 |阅读模式
  程序代码——调用Function通用方法:
  


  • package com.boxun.crm.util;

  • import java.sql.CallableStatement;

  • import java.sql.ResultSet;
  • import java.sql.ResultSetMetaData;
  • import java.sql.SQLException;
  • import java.sql.Statement;
  • import java.util.ArrayList;
  • import java.util.HashMap;
  • import java.util.List;
  • import java.util.Map;
  • import org.hibernate.HibernateException;
  • import org.hibernate.Query;
  • import org.hibernate.Session;
  • import org.hibernate.SessionFactory;
  • import org.hibernate.Transaction;
  • import org.hibernate.cfg.Configuration;

  • public class DAOUtil {

  •     private static DAOUtil instance = null;
  •     private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
  •     private static final ThreadLocal threadLocal = new ThreadLocal();
  •     private static final Configuration cfg = new Configuration();
  •     private static SessionFactory sessionFactory = null;


  •     public synchronized static DAOUtil getInstance()
  •     {
  •         if (instance == null) {
  •             instance = new DAOUtil();
  •             try {
  •                 cfg.configure(CONFIG_FILE_LOCATION);
  •                 sessionFactory = cfg.buildSessionFactory();
  •             } catch (HibernateException e) {
  •                 e.printStackTrace();
  •             }
  •         }
  •         return instance;
  •     }

  •     public Session getSession() {
  •         Session session = (Session) threadLocal.get();
  •         try {
  •             if ((session == null) || (!session.isOpen())) {
  •                 session = sessionFactory.openSession();
  •                 threadLocal.set(session);
  •             }
  •         } catch (HibernateException e) {
  •             e.printStackTrace();
  •         }
  •         return session;
  •     }

  •     public void closeSession() {
  •         Session session = (Session) threadLocal.get();
  •         threadLocal.set(null);
  •         if ((session != null) && (session.isOpen())) {
  •             session.flush();
  •             session.close();
  •         }
  •     }

  •     private String getSqlStr(String fname, int size) {
  •         StringBuffer sql = new StringBuffer();
  •         //String call="{? call pro(?,?,?)}";
  •         sql.append("{ ? = call ");
  •         sql.append(fname);
  •         sql.append("(");
  •         for (int i = 0; i < size; i++) {
  •             sql.append(&quot;?&quot;);
  •             if (i < size - 1) {
  •                 sql.append(&quot;,&quot;);
  •             }
  •         }
  •         sql.append(&quot;) }&quot;);

  •         return sql.toString();
  •     }

  •     private String formatSqlStr(String sql, ArrayList params) {
  •         if ((params == null) || (params.size() == 0))
  •             return sql;
  •         for (int i = 0; i < params.size(); i++) {
  •             sql = sql.replaceFirst(&quot;//?&quot;, String.valueOf(params.get(i)));
  •         }
  •         return sql;
  •     }

  •     @SuppressWarnings(&quot;deprecation&quot;)
  •     public int executeByFun(Session session, String fname, List params)
  •             throws HibernateException, SQLException {
  •         String sql = getSqlStr(fname, params.size());
  •         int rval = -100;
  •         try {
  •             if (session.isConnected()) {
  •                 CallableStatement call = session.connection().prepareCall(sql);
  •                 call.registerOutParameter(1, 4);
  •                 int i = 0;
  •                 for (int j = 2; i < params.size(); j++) {
  •                     call.setObject(j, params.get(i));
  •                     i++;
  •                 }

  •                 if (!call.execute()) {
  •                     rval = call.getInt(1);
  •                 }
  •                 call.close();
  •             }
  •         } catch (Exception ex) {
  •             ex.printStackTrace();
  •         }
  •         return rval;
  •     }

  •     public int executeByFun(String fname, List params)
  •             throws HibernateException, SQLException {
  •         String sql = getSqlStr(fname, params.size());
  •         int rval = -100;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 CallableStatement call = session.connection().prepareCall(sql);
  •                 call.registerOutParameter(1, 4);
  •                 int i = 0;
  •                 for (int j = 2; i < params.size(); j++) {
  •                     call.setObject(j, params.get(i));
  •                     i++;
  •                 }

  •                 if (!call.execute()) {
  •                     rval = call.getInt(1);
  •                 }
  •                 call.close();
  •             }
  •         } finally {
  •             closeSession();
  •         }
  •         return rval;
  •     }

  •     public double executeByFunDouble(String fname, ArrayList params)
  •             throws HibernateException, SQLException {
  •         String sql = getSqlStr(fname, params.size());
  •         double rval = -100.0D;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 CallableStatement call = session.connection().prepareCall(sql);
  •                 call.registerOutParameter(1, 8);
  •                 int i = 0;
  •                 for (int j = 2; i < params.size(); j++) {
  •                     call.setObject(j, params.get(i));

  •                     i++;
  •                 }

  •                 if (!call.execute()) {
  •                     rval = call.getDouble(1);
  •                 }
  •                 call.close();
  •             }
  •         } finally {
  •             closeSession();
  •         }
  •         return rval;
  •     }

  •     public int executeBySql(String sql, ArrayList params)
  •             throws HibernateException, SQLException {
  •         Transaction tran = null;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 Query query = session.createSQLQuery(sql);
  •                 for (int i = 0; i < params.size(); i++)
  •                     query.setParameter(i, params.get(i));
  •                 tran = session.beginTransaction();
  •                 int rval = query.executeUpdate();
  •                 tran.commit();
  •                 return rval > 0 ? 0 : -100;
  •             }
  •         } finally {
  •             closeSession();
  •         }
  •         return -100;
  •     }

  •     public double executeBySqlDouble(String sql, ArrayList params)
  •             throws HibernateException, SQLException {
  •         Transaction tran = null;
  •         double rval = 0.0D;
  •         List list = null;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 Query query = session.createSQLQuery(sql);
  •                 for (int i = 0; i < params.size(); i++)
  •                     query.setParameter(i, params.get(i));
  •                 tran = session.beginTransaction();
  •                 list = query.list();
  •                 if (list != null && list.size() > 0) {
  •                     rval = Double.parseDouble(list.get(0)==null ? 0.0 + &quot;&quot;
  •                             : list.get(0) + &quot;&quot;);
  •                 }
  •                 tran.commit();
  •             }
  •         } finally {
  •             closeSession();
  •         }
  •         return rval;
  •     }

  •     public List getResultByFun(String fname, ArrayList params)
  •             throws HibernateException, SQLException {
  •         String sql = getSqlStr(fname, params.size());
  •         List result = null;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 System.out.println(session.connection().prepareCall(sql));
  •                 CallableStatement call = session.connection().prepareCall(sql);
  •                 call.registerOutParameter(1, -10);

  •                 for (int i = 0, j = 2; i < params.size(); j++) {
  •                     call.setObject(j, params.get(i));

  •                     i++;
  •                 }

  •                 if (!call.execute()) {
  •                     ResultSet rs = (ResultSet) call.getObject(1);
  •                     ResultSetMetaData rsmd = rs.getMetaData();
  •                     String[] colname = new String[rsmd.getColumnCount()];
  •                     for (int j = 1, i = 0; i < colname.length; j++) {
  •                         colname = rsmd.getColumnName(j);
  •                         i++;
  •                     }
  •                     result = new ArrayList();
  •                     while (rs.next()) {
  •                         Map row = new HashMap();
  •                         for (int i = 0; i < colname.length; i++)
  •                             row.put(colname, rs.getObject(colname));
  •                         result.add(row);
  •                     }
  •                     rs.close();
  •                 }
  •                 call.close();
  •             }
  •         } finally {
  •             closeSession();
  •         }

  •         return result;
  •     }

  •     public String getResultByFunString(String fname, ArrayList params)
  •             throws HibernateException, SQLException {
  •         String sql = getSqlStr(fname, params.size());
  •         String str = &quot;&quot;;
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 CallableStatement call = session.connection().prepareCall(sql);
  •                 call.registerOutParameter(1, 12);

  •                 for (int i = 0, j = 2; i < params.size(); j++) {
  •                     call.setObject(j, params.get(i));
  •                     i++;
  •                 }
  •                 if (!call.execute()) {
  •                     str = String.valueOf(call.getObject(1));
  •                 }
  •                 call.close();
  •             }
  •         } finally {
  •             closeSession();
  •         }

  •         return str;
  •     }

  •     public List getResultBySql(String sql, ArrayList params)
  •             throws HibernateException, SQLException {
  •         List result = null;
  •         sql = formatSqlStr(sql, params);
  •         try {
  •             Session session = DAOUtil.getInstance().getSession();
  •             if (session.isConnected()) {
  •                 Statement stat = session.connection().createStatement();
  •                 ResultSet rs = stat.executeQuery(sql);
  •                 ResultSetMetaData rsmd = rs.getMetaData();
  •                 String[] colname = new String[rsmd.getColumnCount()];
  •                 for (int j = 1, i = 0; i < colname.length; j++) {
  •                     colname = rsmd.getColumnName(j);
  •                     i++;
  •                 }

  •                 result = new ArrayList();
  •                 while (rs.next()) {
  •                     Map row = new HashMap();
  •                     for (int i = 0; i < colname.length; i++)
  •                         row.put(colname, rs.getObject(colname));
  •                     result.add(row);
  •                 }
  •                 rs.close();
  •                 stat.close();
  •             }
  •         } finally {
  •             closeSession();
  •         }
  •         return result;
  •     }
  • }
  

  应用程序调用Function:
  


  • /**添加参数**/
  • ArrayList params = new ArrayList();
  • if((null !=wer_1 && &quot;&quot;!=wer_1)&&(null !=wer_2 && &quot;&quot;!=wer_2))
  • {
  •     /**
  •      * 古道西风
  •      * 2011-05-23
  •      */
  •     params.add(tbmeetmgr.getStoptime()); //会议开会日期
  •     params.add(tbmeetmgr.getStarttime()); //会议开始时间
  •     params.add(tbmeetmgr.getEndtime());//会议结束时间
  •     params.add(ecId);//集团编号
  •     if(tbmeetmgr.getXunhuairiqi() == null){
  •         params.add(0); //循环日期
  •     }else{
  •         params.add(tbmeetmgr.getXunhuairiqi()); //循环日期
  •     }
  •     if(tbmeetmgr.getXunhuaimoshi() == null){
  •         params.add(0); //循环模式
  •     }else{
  •         params.add(tbmeetmgr.getXunhuaimoshi()); //循环模式
  •     }
  •     params.add(tbmeetmgr.getHuiyimoshi()); //会议模式
  • }

  • //List list_Sel_RoomInfo=daoSql.find(sql, params); //原程序代码

  • List list_Sel_RoomInfo = new ArrayList();;
  • try {
  •     list_Sel_RoomInfo = com.boxun.crm.util.DAOUtil.getInstance().getResultByFun
  •             (&quot;FUN_tbmeetmgrInfo.pro_sel_tbmeetmgrinfo&quot;, params);
  • } catch (HibernateException e) {
  •     e.printStackTrace();
  • } catch (SQLException e) {
  •     e.printStackTrace();
  • }
  • if(null !=list_Sel_RoomInfo && list_Sel_RoomInfo.size()>0)
  • {
  •     list_room_info=new ArrayList();
  •     for(int i=0;i

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-602145-1-1.html 上篇帖子: Suse Enterprise 11 安装Oracle 11.2(二) 下篇帖子: oracle关于坏块修复二
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表