`
longgangbai
  • 浏览: 7326139 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate调用执行存储过程

 
阅读更多

    项目中需要采用存储过程使用代码:

 

/**
  * 执行存储过程的方法(存储过程仅仅支持输入参数的使用,并且无返回值的以后扩展信息)
  *
  * @param procedureName
  *            存储过程的名称
  * @param paramList
  *            备注:Map<String, Object> paramList 其中String 参数: Object输入的参数对象
  *            存储过程参数的信息
  */
 public void executeProcedure(String procedureName, final Map<String, Object> paramList) {
  if (StringUtils.isNotBlank(procedureName)) {
   int length = 0;
   if (MapUtils.isNotEmpty(paramList)) {
    length = paramList.size();
   }
   final String executeProcedure = generationExcuteProdure(procedureName, length);
   this.getHibernateTemplate().execute(new HibernateCallback() {
    @SuppressWarnings("deprecation")
    @Override
    public Object doInHibernate(Session session) throws HibernateException, SQLException {
     boolean flag = false;
     Transaction trans = session.beginTransaction();
     try {
      CallableStatement cstmt = session.connection().prepareCall(executeProcedure);
      if (MapUtils.isNotEmpty(paramList)) {
       Set<Entry<String, Object>> entrys = paramList.entrySet();
       for (Entry<String, Object> entry : entrys) {
        cstmt.setObject(entry.getKey(), entry.getValue());
       }
      }
      flag = cstmt.execute();
      trans.commit();
     } catch (RuntimeException e) {
      trans.rollback();
      flag = false;
      logger.error(e);
     }
     return flag;
    }
   });
  } else {
   throw new RuntimeException(" the procedureName is not null!");
  }
 }

 

 

 /**
  * 生成存储过程的方法
  *
  * @param procedureName
  *            存储过程的名称
  * @param length
  *            参数的个数
  * @return 生成的执行的存储过程
  */
 private String generationExcuteProdure(String procedureName, int length) {
  StringBuilder sql = new StringBuilder();
  sql.append("{ call ");
  sql.append(StringUtils.trim(procedureName));
  if (length > 0) {
   sql.append("(");
   for (int i = 0; i < length; i++) {
    sql.append("?");
    if (i != length - 1) {
     sql.append(",");
    }
   }
   sql.append(")");
  }
  sql.append("}");
  logger.info("executeProcedure", sql.toString());
  return sql.toString();
 }

 

备注:项目中采用注解希望大家指点一下,有没有更加简单的方法或采用注解方式:

@SQLInsert,@SQLUpdate,怎么使用希望大家拍砖!!

好像可以但是不知道怎么使用?请教高人支持!!!!

分享到:
评论

相关推荐

    hibernate调用存储过程

    hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    hibernate调用存储过程的方法调用

    - **执行存储过程**:调用`executeUpdate`或`list`方法执行存储过程。对于无返回值的存储过程,通常使用`executeUpdate`;如果有结果集,可以使用`list`获取并处理结果。 - **处理结果**:如果存储过程返回结果,...

    spring hibernate执行存储过程的例子

    本文将深入探讨如何在Spring和Hibernate中执行存储过程,并基于描述中的例子进行解析。 首先,让我们了解Spring如何执行存储过程。Spring通过JdbcTemplate或NamedParameterJdbcTemplate提供存储过程的调用。...

    hibernate框架调用存储过程

    总结来说,Hibernate调用存储过程是通过`StoredProcedureQuery`对象实现的,提供了更简便的对象化API。对比JDBC,Hibernate更注重开发者体验,而JDBC则更适合对数据库操作有深度控制的需求。在实际开发中,根据项目...

    Hibernate 调用存储过程

    ### Hibernate调用存储过程详解 #### 一、建立存储过程 在进行Hibernate调用存储过程之前,首先需要在数据库中创建存储过程。本例中创建了一个名为`getUserInfo`的简单存储过程,其功能是从`user`表中选择所有记录...

    Hibernate3调用存储过程用法

    执行SQLQuery对象的executeUpdate或list方法来执行存储过程。对于无返回结果或只有输出参数的情况,通常使用executeUpdate。 ```java int rowsAffected = query.executeUpdate(); ``` 5. **关闭资源** 最后,...

    1、hibernate调用存储过程1

    总结,使用Hibernate调用存储过程,无论是不带参数还是带参数返回值的,都需要创建SQL查询或`CallableStatement`,设置参数,执行存储过程,并处理返回结果。在处理过程中,需要注意事务管理,确保数据的一致性。...

    hibernate调用存储过程.docx

    在某些复杂场景下,比如需要执行存储过程或者复杂的SQL查询时,Hibernate也提供了相应的支持。以下我们将详细探讨如何在Hibernate中调用存储过程,并结合文档内容,讲解相关的知识点。 首先,存储过程是数据库中预...

    hibernate调用存储过程[参考].pdf

    调用存储过程时,我们需要创建一个Hibernate的Session对象,然后利用Session的`createSQLQuery`方法来执行存储过程。例如,调用`getUserList`过程可以写成: ```java Session session = HibernateUtil....

    Hibernate使用存储过程

    在Hibernate中调用这个存储过程,我们需要创建一个事务,获取数据库连接,然后通过CallableStatement对象执行存储过程: ```java Transaction tx = session.beginTransaction(); Connection con = session....

    hibernate调用存储过程知识.pdf

    然后,实现这个接口,使用Hibernate的`Session`对象调用`createSQLQuery`方法来执行存储过程。例如,调用`getUserList`的实现可能是: ```java public void getUserList() { Session session = HibernateUtil....

    hibernate存储过程

    - 使用`Session.createSQLQuery()`方法创建SQLQuery对象,然后通过`addScalar()`指定返回值类型,`executeUpdate()`或`list()`执行存储过程。 3. **调用存储过程的方法** - **简单调用**:对于无参数或只接收输入...

    hibernate环境搭建已经对应存储过程调用

    2. **定义CallabledStatement**:在Hibernate中,使用Session的doWork方法或者Session的createCallableStatement方法来执行存储过程。 3. **映射输出参数和结果集**:如果存储过程有输出参数或结果集,你需要定义...

    Hibernate存储过程的调用

    - 执行存储过程。 ```java Session session = sessionFactory.openSession(); StoredProcedureQuery query = session.createStoredProcedureQuery("batchUpdateStudent"); // 设置输入参数(如果有的话) ...

    NHibernate调用存储过程全集,值.

    除了映射文件,还可以在运行时动态创建SQLQuery对象来执行存储过程,这适用于那些不需要持久化到实体类的结果。例如: ```csharp string sql = "EXEC usp_CustomProcedure :param1"; SQLQuery query = session....

    java-hibernate调用mysql过程和函数的方式知识.pdf

    在 Java 中,我们需要使用 `registerOutParameter()` 方法来注册输出参数,然后使用 `execute()` 方法来执行存储过程,并使用 `getString()` 方法来获取输出参数的值。 示例代码 下面是一个简单的示例代码,演示...

Global site tag (gtag.js) - Google Analytics