【问题标题】:getting data from MySQL database从 MySQL 数据库中获取数据
【发布时间】:2015-01-29 10:42:47
【问题描述】:

我使用的 Grails 没有通常的 H2 db。相反,我在本地和服务器上安装了 MySQL。

我需要在这个 MySQL 数据库中运行查询并在 GSP 中显示数据(准确地说:我想用 highcharts 将它们可视化)。存储所需信息的表与我的 Grails 项目中的域没有关联。

如何在不使用 PHP 的情况下访问数据?

【问题讨论】:

    标签: mysql grails


    【解决方案1】:

    Grails 的一个美妙之处在于它建立在 Spring 和 Groovy 以及它们提供的所有美妙的东西之上。这意味着,您可以使用 Groovy SQL 包访问您的数据源。

    可以在blog post 中找到一个非常详细的 Grails 示例。

    这是一个简单的示例(仅对上述博客稍作修改):

    package example
    
    import groovy.sql.Sql
    import groovy.sql.GroovyRowResult
    
    class PersonService {
    
        // Reference to default datasource, autowired into the service through DI.
        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)
            return results
        }
    }
    

    关于Sql class 的Groovy API 也值得一看。

    【讨论】:

    • 好的,谢谢,我正在调查。但我需要为它创建一个新域和一个控制器?
    • 您将需要一个控制器或服务来将您的代码放入其中,但都不需要域类来工作/存在。上面的代码与任何领域类都没有任何关系。
    【解决方案2】:

    在 DataSource.groovy 中,您可以为每个环境配置 DB。 默认情况下,用于 dev evn H2 基础,但用于生产 MYSQL。 配置示例:

    development {
      dataSource {
         dbCreate = "none"  // one of 'create', 'create-drop', 'update', 'validate', ''
         username = "root"
         password = "root"
         url = "jdbc:mysql://localhost:3306/test"
         driverClassName = "com.mysql.jdbc.Driver"
         dialect = 'org.hibernate.dialect.MySQL5InnoDBDialect'
    //      logSql = true
      }
    }
    

    使用 gorm http://grails.github.io/grails-doc/latest/guide/GORM.html#basicCRUD

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多