关于grails连接数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于grails连接数据库相关的知识,希望对你有一定的参考价值。

我现在手头有一个有数据的数据库,现在是想用grails把其中的内容在页面上显示出来,但是刚刚接触这个不到一天,现在有点迷惘。。希望各位大神能够详细给我解决一下。谢谢

作设你已安装好GRAILS,并配置好环境。

首先是新建APP,可以在命令行中输入:grails create-app 新建应用程序。

接着在/grais-app/conf/DataSource.groovy中配置好数据库的连接。

需要有JAVA连接数据库的基本知识,此处不作解释,请自行学习。

这里是一个例子:

dataSource 
//这里是通用的设置
                     
environments 
  production //这里是真实运行时的配置
     dataSource 
          //dbCreate = "update"  不配置dbCreate 不会对数据表进行任何结构上的改变。
          url = "jdbc:jtds:sqlserver://22.64.111.13:1433/cibinf"
          driverClassName = "net.sourceforge.jtds.jdbc.Driver"     //JAVA驱动
          
  
  development//这里是开发运行是的配置
      dataSource 
          dbCreate = "update" //配置为update 会根据DOMAIN对数据表进行结构上的改变。
          url = "jdbc:jtds:sqlserver://22.64.111.13:1433/temp"
          driverClassName = "net.sourceforge.jtds.jdbc.Driver"
      
  

其次是根据已有数据表建立DOMAIN,可以在命令行模式下输入

grails creat-domain-class

进行新建

举例:

原有表:chx_base_click

id(自增列),name(char(4)),clicktime(int),lastdate(Date)

对应的DOMAIN定义如下:

class BaseClick 
    //grails中id是缺省的自增列,无需定义,初学者也请不要自行定义。
    String name
    Integer clicktime
    Date lastdate
    
    static mapping = 
        table 'chx_base_click'//指定表名,否则GRAILS会到数据库中寻找(新建)名为base_click的表。
        version false //GRAILS会自动建VERSION列,用于处理编辑冲突的,遗留数据库通常不使用,因此此处进行关闭
        //如果有自增列,且名字不为ID(举例为myid),则这样配置:id column: "myid"
    
    
    static constraints = 
        name(size:4)
        clicktime()
        lastdate()
    

接下来是新建CONTROLLER和VIEW,

GRAILS 会根据你的DOMAIN自动为你完成相关的代码。

新建的命令如下:(BaseClick是上面例子中DOMAIN的名字)

grails generate-all BaseClick


更多关于如何根据已有数据库配置DOMAIN的介绍请自行GOOGLE,关键字包括:GRAILS,遗留数据库。

参考技术A 不知道,你具体说的是什么,你可以加我qq,593949938

grails应用程序中的Mysql连接超时,在ELB上使用mariadb galera集群

【中文标题】grails应用程序中的Mysql连接超时,在ELB上使用mariadb galera集群【英文标题】:Mysql connection time out in grails application, using mariadb galera cluster over ELB 【发布时间】:2015-12-05 05:55:35 【问题描述】:

我刚刚迁移了我的数据库以支持从 mysql 到 mariadb 的 2 节点集群数据库的复制。数据库托管在不同的域上并通过 ELB 访问,当我将应用程序指向其中一个节点时,应用程序工作正常,但是当我使用 ELB url 连接数据库时,它会随机波动并经常显示以下错误

Communication Link Failure
could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

这是我的数据源配置:-

dataSource 
shard = false
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dbCreate = "update" // one of 'create', 'create-drop','update'

properties 
    initialSize=5
    maxActive=50
    minIdle=5
    maxIdle=25
    maxWait = 10000
    maxAge = 10 * 60000
    timeBetweenEvictionRunsMillis=5000
    minEvictableIdleTimeMillis=60000
    validationQuery="SELECT 1"
    validationInterval=15000
    testWhileIdle=true
    testOnBorrow=true
    testOnReturn=false
    jdbcInterceptors = "ConnectionState"
    defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED

任何人都可以找出问题所在并提供可能的解决方案

【问题讨论】:

您能否尝试增加 DataSourceConfig.groovy 中的 maxWait 和 maxAge,因为有时它可能会花费比平时更多的时间。 已经尝试了所有可能的组合 如何在 DataSourceConfig 设置中添加一个 autoReconnect 属性。它的默认值为 false。您可能希望将其设置为 true 并查看是否可以解决您的问题。 已经有了,我在 jdbc:mysql:///?zeroDateTimeBehavior=convertToNull&autoReconnect=true 中添加了这个 【参考方案1】:

我发现了这个问题,ELB 中有一个名为 idleTimeOut 的字段被设置为仅 60 秒,并且花费超过 1 分钟的查询意外下降,在将超时时间增加到 600 秒后,问题不再复制. :)

【讨论】:

以上是关于关于grails连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

Grails如何连接多数据库

Grails/Hibernate 数据库在负载下崩溃:无法连接(即使在池中)

grails怎样连接mysql数据库

Grails 2.4.4 executeQuery() 从数据库表连接表

Grails 2.3.0 和 mysql 连接超时

如何获取 Grails 的 jasper 报告的数据源连接?