gpt4 book ai didi

grails - 如何在grails中调用具有动态名称的mysql存储过程

转载 作者:行者123 更新时间:2023-12-02 15:53:59 24 4
gpt4 key购买 nike

我需要调用存储过程来获取数据,这里我将通过发布数据获取存储过程名称。

我尝试使用 GString 但没有用,任何人都可以帮我解决这个问题。

提前致谢。

最佳答案

这是一个奇怪的,但可能的。 Grails/GORM 不提供执行存储过程的方法。它只是不是 ORM 功能的一部分。 Hibernate 也不行。但是,Hibernate 确实提供了对 JDBC 连接的访问​​。因此,您可以从 Hibernate 获得连接,然后创建一个 Groovy Sql实例与连接,最后执行你的存储过程。这是一个例子:

import groovy.sql.Sql

SomeDomainClass.withNewSession { session ->
session.doWork { java.sql.Connection connection ->
def sql = new Sql(connection)

sql.call("YOUR STORED PROCEDURE SQL HERE")
}
}

它是这样工作的:
  • 使用您的任何域类,请调用 withSession(Closure)获得一个休眠 session 。
  • 参加 session ,请调用 doWork(Work)访问 session 的 JDBC 连接。现在,doWork(Work)期望 的实现org.hibernate.jdbc.Work .但是,如果我没记错的话,Groovy 可以采用相同参数的闭包并强制它实现接口(interface)。
  • 使用连接,创建一个 Sql 实例。您可以跳过这个并使用 Java 进行查询,但是 Groovy 的 Sql 类非常好。
  • 使用可用的 Sql.call() 之一执行存储过程的方法。
  • 关于grails - 如何在grails中调用具有动态名称的mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346496/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com