groovy grails_Grails的优点:使用Groovy SQL

groovy grails

在上一篇文章中,我们学习了如何在Grails应用程序中使用Hibernate本机SQL查询。 我们还可以使用Groovy SQL执行自定义SQL 。 我们必须在代码中创建groovy.sql.Sql的新实例以执行SQL代码。 最简单的方法是将javax.sql.DataSource用作groovy.sql.Sql类的构造函数参数。 在Grails应用程序上下文中,我们已经有一个DataSource ,我们可以使用它将其注入到我们的代码中。 我们必须使用名称dataSource来引用Grails应用程序中的默认数据源。

在以下示例中,我们使用Groovy SQL调用自定义查询(针对Firebird)。 注意,我们在Grails服务PersonService定义了一个属性dataSource ,Grails将自动注入一个DataSource实例。

package com.mrhaki.grails

import groovy.sql.Sql
import groovy.sql.GroovyRowResult

class PersonService {

    // Reference to default datasource.
    def dataSource

    List<GroovyRowResult> allPersons(final String searchQuery) {
        final String searchString = "%${searchQuery.toUpperCase()}%"

        final String query = '''\
            select id, name, email 
            from person 
            where upper(email collate UNICODE_CI_AI) like :search
        '''

        // Create new Groovy SQL instance with injected DataSource.
        final Sql sql = new Sql(dataSource)

        final results = sql.rows(query, search: searchString)
        results
    }

}

我们甚至可以在Grails应用程序groovy.sql.Sql实例成为Spring bean。 然后,我们可以将Sql实例注入Grails服务中。 在grails-app/conf/spring/resources.groovy我们定义Sql bean:

// File: grails-app/conf/spring/resources.groovy
beans = {
 
    // Create Spring bean for Groovy SQL.
    // groovySql is the name of the bean and can be used
    // for injection.
    groovySql(groovy.sql.Sql, ref('dataSource'))
 
}

现在,我们可以重写前面的示例,并使用bean groovySql

package com.mrhaki.grails
 
import groovy.sql.GroovyRowResult
 
class PersonService {
 
    // Reference to groovySql defined in resources.groovy.
    def groovySql
 
    List<GroovyRowResult> allPersons(final String searchQuery) {
        final String searchString = "%${searchQuery.toUpperCase()}%"
 
        final String query = '''\
            select id, name, email
            from person
            where upper(email collate UNICODE_CI_AI) like :search
        '''
 
        // Use groovySql bean to execute the query.
        final results = groovySql.rows(query, search: searchString)
        results
    }
 
}

用Grails 2.3.7编写的代码。

翻译自: https://www.javacodegeeks.com/2014/03/grails-goodness-using-groovy-sql.html

groovy grails

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值