`
hcleon
  • 浏览: 266241 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Grails: 连接mysql数据库

阅读更多
Grails切换到mysql数据库需要做如下的配置:
1、将mysql-connector-java-5.1.22-bin.jar驱动复制到Grails应用的根目录lib下面。
2、修改conf/DataSource.groovy;Grails默认用的是H2数据库,我们需要将driverClassName = "org.h2.Driver" 改成 driverClassName = 'com.mysql.jdbc.Driver';url改成我们自己数据库的url

上面的改法会发生几个问题,
1、如果单纯光把驱动复制到lib目录,会发生异常:
java.lang.ClassNotFoundException: com/mysql/jdbc/Driver
找不到这个驱动,此时我们还需要在BuildConfig.groovy文件中加入下面的配置:
dependencies {
    runtime 'mysql:mysql-connector-java:5.1.22'
}

2、尽管我们自己的应用用的是mysql,但是可能某些插件或者框架用的是H2数据库,这样如果我们之配置mysql的数据源,可能导致数据库连接驱动不匹配的异常。
因此我们需要保留原来的数据源配置,另外添加mysql的数据源。
dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }

dataSource_mysql {
dialect = org.hibernate.dialect.MySQLInnoDBDialect
driverClassName = 'com.mysql.jdbc.Driver'
username = 'root'
password = 'root'
url = 'jdbc:mysql://localhost/DojoGrails'
dbCreate = 'update'
}
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
            pooled = true
            properties {
               maxActive = -1
               minEvictableIdleTimeMillis=1800000
               timeBetweenEvictionRunsMillis=1800000
               numTestsPerEvictionRun=3
               testOnBorrow=true
               testWhileIdle=true
               testOnReturn=true
               validationQuery="SELECT 1"
            }
        }
    }
}

上面是DataSource配置的例子,添加了第二个数据源 dataSource_mysql
在这个多数据源应用里,我们需要在使用dataSource_mysql数据源的domain类里加入如下配置:
static mapping = {
datasource 'mysql'
}
以表明这个domain用的是哪个数据源;


~~~~~~~~~~~~~~
官方对多数据源的说明:

Configuring Additional DataSources
The default DataSource configuration in grails-app/conf/DataSource.groovy looks something like this:

dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}
environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:h2:mem:devDb"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb"
        }
    }
}

This configures a single DataSource with the Spring bean named dataSource. To configure extra DataSources, add another dataSource block (at the top level, in an environment block, or both, just like the standard DataSource definition) with a custom name, separated by an underscore. For example, this configuration adds a second DataSource, using MySQL in the development environment and Oracle in production:

environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:h2:mem:devDb"
        }
        dataSource_lookup {
            dialect = org.hibernate.dialect.MySQLInnoDBDialect
            driverClassName = 'com.mysql.jdbc.Driver'
            username = 'lookup'
            password = 'secret'
            url = 'jdbc:mysql://localhost/lookup'
            dbCreate = 'update'
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb"
        }
        dataSource_lookup {
            dialect = org.hibernate.dialect.Oracle10gDialect
            driverClassName = 'oracle.jdbc.driver.OracleDriver'
            username = 'lookup'
            password = 'secret'
            url = 'jdbc:oracle:thin:@localhost:1521:lookup'
            dbCreate = 'update'
        }
    }
}
You can use the same or different databases as long as they're supported by Hibernate.

Configuring Domain Classes
If a domain class has no DataSource configuration, it defaults to the standard 'dataSource'. Set the datasource property in the mapping block to configure a non-default DataSource. For example, if you want to use the ZipCode domain to use the 'lookup' DataSource, configure it like this;

class ZipCode {
   String code

   static mapping = {
      datasource 'lookup'
   }
}

A domain class can also use two or more DataSources. Use the datasources property with a list of names to configure more than one, for example:

class ZipCode {
   String code

   static mapping = {
      datasources(['lookup', 'auditing'])
   }
}

If a domain class uses the default DataSource and one or more others, use the special name 'DEFAULT' to indicate the default DataSource:

class ZipCode {
   String code

   static mapping = {
      datasources(['lookup', 'DEFAULT'])
   }
}

If a domain class uses all configured DataSources use the special value 'ALL':

class ZipCode {
   String code

   static mapping = {
      datasource 'ALL'
   }
}
分享到:
评论
4 楼 hcleon 2013-06-05  
liuxiaomei_1990lxm 写道
它怎么也自动找不到我自己配置的mysql数据库,这是什么原因呢?我导入的包有:
mysqldriver.jar和mysql-connector-java-5.1.22-bin.jar




1、如果单纯光把驱动复制到lib目录,会发生异常:
java.lang.ClassNotFoundException: com/mysql/jdbc/Driver
找不到这个驱动,此时我们还需要在BuildConfig.groovy文件中加入下面的配置:
dependencies {
    runtime 'mysql:mysql-connector-java:5.1.22'
}
3 楼 liuxiaomei_1990lxm 2013-05-08  
它怎么也自动找不到我自己配置的mysql数据库,这是什么原因呢?我导入的包有:
mysqldriver.jar和mysql-connector-java-5.1.22-bin.jar
2 楼 liuxiaomei_1990lxm 2013-05-08  
Exception in thread "main" groovy.lang.MissingPropertyException: No such property: includeTargets for class: _GrailsArgParsing
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
at _GrailsArgParsing.run(_GrailsArgParsing.groovy:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:623)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1082)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:906)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:848)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:831)
at org.codehaus.groovy.runtime.InvokerHelper.runScript(InvokerHelper.java:407)
at org.codehaus.groovy.runtime.InvokerHelper$runScript.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at _GrailsArgParsing.main(_GrailsArgParsing.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:623)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

按您说的这种配置数据源,在IDEA里报了这个错误。命令行里是
Caused by ClassNotFoundException: com.mysql.jdbc.Driver
Caused by SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
1 楼 chooseandroid 2013-03-15  
thank you!

相关推荐

    idea连接mysql数据库.docx

    ### 使用IntelliJ IDEA连接MySQL数据库的详细指南 在现代软件开发中,数据库操作是必不可少的一部分,特别是对于那些需要处理大量数据的应用程序来说更是如此。IntelliJ IDEA是一款由JetBrains开发的强大集成开发...

    grails 连接mysql

    这个例子实现了用grails 连接mysql 数据库,并且把内容显示出来,可以增删除改,下载这个例子后大家要把jdk tomcat grails环境搭好,然后用grails run-app来执行,也可以用其它的开发工具,本人用的是netbeans

    grails3 CAS链接接数据库

    标题中的“grails3 CAS链接接数据库”表明我们要讨论的是如何在Grails 3框架下集成CAS(Central Authentication Service)并实现与数据库的连接。Grails是一个基于Groovy语言的开源Web应用框架,而CAS是一种广泛使用...

    Grails3配置单独的数据库properties.pdf

    本篇将详细介绍如何在Grails 3中配置单独的数据库properties,以便在开发过程中管理多个数据源,满足复杂的企业级需求。 首先,我们需要理解Grails中的数据源配置。默认情况下,Grails使用一个名为`dataSource`的主...

    grails增删改查(初学者必备)

    - **MySQL数据库**:安装MySQL数据库,并创建对应的数据库连接。确保MySQL驱动已添加到项目中,以便Grails能与数据库交互。 2. **创建新项目** - 使用`grails create-app`命令创建一个新的Grails应用。例如:`...

    ds_test.rar_ds test_grails_oracle

    描述中的"grails 多数据库源访问,分别访问mysql数据库和oracle 数据库"点明了主要内容。在Grails中,通过灵活的数据源配置,开发者可以轻松地管理多个数据库连接。这意味着该压缩包可能包含了一个Grails应用,该...

    Grails企业web应用开发与部署

    1. GORM:Grails的ORM框架,支持关系型数据库如MySQL、PostgreSQL,也支持NoSQL数据库如MongoDB。GORM通过领域类(Domain Class)实现数据建模,提供便捷的数据操作接口。 2. 视图层:Grails支持多种模板引擎,如GSP...

    Grails Grails Grails

    2. **GORM(Grails Object Relational Mapping)**: GORM 是Grails的ORM框架,提供了与数据库交互的能力,支持关系型数据库,如MySQL、PostgreSQL等。它提供了CRUD操作,以及事务管理和动态查询。 3. **插件系统**...

    grails开发笔记

    - 如果数据库和服务器位于同一系统下,则数据库连接地址应设为 `localhost`。 - 构建后生成的 `.war` 文件可能不包含额外的 `.properties` 文件,需要手动调整文件路径以确保正确加载配置文件。 - 发布后的操作系统...

    groovy脚本实现对数据库的增删改查

    首先,我们需要连接到数据库。在Groovy中,我们可以利用JDBC(Java Database Connectivity)API来实现这一目标。JDBC是Java平台的一个标准接口,允许我们与各种类型的数据库进行交互。 1. **连接数据库**: 首先,...

    grails项目配置

    在`grails-app/conf/DataSource.groovy`文件中,我们可以配置不同的环境(如开发、测试和生产)下的数据库连接信息。例如,对于MySQL: ```groovy environments { development { dataSource { dbCreate = ...

    [Groovy入门]第八讲.将玩具信息写到MySQL

    首先,Groovy提供了对JDBC(Java Database Connectivity)的无缝支持,这意味着我们可以使用Groovy来编写SQL语句,连接和操作MySQL数据库。在Groovy中,我们可以通过以下步骤建立数据库连接: 1. 导入所需的JDBC...

    Mail服务器应用

    日志中还包含了关于MySQL数据库连接失败的错误信息: ``` com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:CommunicationslinkfailureLastpacketsenttotheserverwas4msago. ``` **知识点:** - **...

    java课程设计.pdf

    调试过程中,可能需要使用IDE如IntelliJ IDEA或Eclipse的Grails插件,以及数据库管理工具,如MySQL Workbench。 3. **具体建立步骤** - **创建项目**:使用Grails命令行工具创建名为`tongxuelu`的新项目。 - **...

    java课程设计(20211003221521).pdf

    4. 数据库:如MySQL或HSQLDB,用于存储同学录数据。 安装完成后,通过命令行工具进行Grails环境配置和项目的创建。 三、具体建立 1. 创建项目:使用Grails命令行工具创建名为“tongxuelu”的新项目。 2. 领域类:...

    外键关联整理脚本

    `ddl.sql`文件是Grails在生成数据库表结构时产生的,它包含了创建数据库表的SQL语句,这些语句中就包括了定义外键的部分。外键关联的整理,通常是为了理解数据库的结构,优化查询性能,或者在数据库迁移、升级时确保...

    DocumentViewer:文档查看器演示,使用 Grails 2.4.3 和 Angular JS

    如果作为生产运行,该应用程序希望在本地主机的默认端口 (3306) 中找到一个 MySQL 实例,其数据库名为“document-viewer”——它将尝试使用用户名 root 进行连接,没有密码(大多数情况下的默认值) MySQL 安装)。...

    fastquery:FastQuery(快速数据库查询的方法)基于Java语言。他的使命是:简化Java操作数据层。做为一个开发者,只需只需要设计DAO接口即可,在项目初始化阶段采用ASM生成好实现类

    阿帕奇Maven < groupId>org.fastquery < artifactId>fastquery < version>1.0.107</ version> <!-- fastquery.version -->...支持与主流数据库连接池框架集成 支持@Query查询,使用@Cond

Global site tag (gtag.js) - Google Analytics