第一个bug,gateway不能自动注入进Controller!
原因是ibatis插件没有把欲注入的gateway首字母改成小写
可修改C:\Documents and Settings\XX\.grails\2.0.0\projects\XX\plugins\ibatis-1.3.1\ IbatisGrailsPlugin.groovy
把
"${a.shortName}"(a.clazz) { bean ->
改为
def shortName = a.shortName[0].toLowerCase() + a.shortName[1..-1];
"${shortName}"(a.clazz) { bean ->
第二个bug,SQL定义里引用包含其他SQL时会出错,如我们定义了一个userGateway,SQL写在这个文件里user.xml
<select id="getUsers" parameterType="xx" resultType="xx">
<include refid="getUsersMain" />
</select>
<sql id="getUsersMain">
SELECT * FROM USER
</sql>
getUsers SQL引用包含了getUsersMain片段,但mybatis就是不认,报错XML fragments parsed from previous mappers does not contain value for ......
原因是grails 的ibatis1.3.1插件用的是mybatis3.04, 而3.04版有这个bug,所以把mybatis升级到最新的3.06吧。
可以把grails-ibatis-1.3.1.zip从官网下载下来,然后解压修改以下文件。
dependencies.groovy改2行
compile 'org.mybatis:mybatis:3.0.6'
compile('org.mybatis:mybatis-spring:1.0.2') {
当然第一个bug你也可以改解压出来的IbatisGrailsPlugin.groovy
改完以后要重装ibatis plugin了
1.首先到你的工程目录下执行grails uninstall-plugin ibatis
2.然后把grails插件的缓存清掉
删除.grails\ivy-cache\org.mybatis
删除.grails\ivy-cache\org.grails.plugins\ibatis
删除.grails\2.0.0\cached-installed-plugins
3.安装新的插件
把你刚才改好的ibatis重新打包为grails-ibatis-1.3.1.zip,比如放在D盘根目录,
到你的工程目录下执行grails install-plugin d:/grails-ibatis-1.3.1.zip
OK了,SQL套SQL终于可以正常执行了。
第三个bug,解析XML时候会尝试连接http://mybatis.org/dtd/mybatis-3-mapper.dtd ,如果机器连不到internet,就会报错。
这个其实原版的mybatis是没有这个问题的,它用了一个EntityResolver来解决这个问题的。到了ibatis plugin就有这个问题了。
解决方法就是修改插件下面的src\groovy\org\codehaus\groovy\grails\plugins\ibatis\ MappingSupport.groovy改123行
new XmlSlurper(validating, true).parseText(text)
改为
def xmlSlurper = new XmlSlurper(validating, true)
xmlSlurper.setEntityResolver(new org.apache.ibatis.builder.xml.XMLMapperEntityResolver())
xmlSlurper.parseText(text)
分享到:
相关推荐
elasticsearch-grails-plugin, 恢复的ElasticSearch grails插件 Elasticsearch插件插件这个项目是一个基于Elasticsearch的插件,这个项目是基于的人完成的伟大工作的。你为什么想要为原来的Elasticsearch插件提供...
NULL 博文链接:https://search.iteye.com/blog/386023
box-java-sdk-v2.zip,Box Java SDKBox Java软件开发工具包(v2)
该项目包含一个名为security的插件和一个名为bookstore的应用程序以测试该插件。 插件用户: org.centerkey.grails.User 应用程序用户(扩展插件用户): com.example.BookstoreUser 试试看 生成插件并运行测试...
event-studio.zip,提供组件间pub/sub事件交换的简单偶数总线实现提供带有事件队列的pub/sub模式的组件总线实现
Grails Grails Grails Grails Grails
classpath " org.grails:grails-gradle-plugin:2.1.2 " } } version " 0.1 " group " example " apply plugin : " grails " repositories { grails . central() // creates a maven repo for the Grails Central ...
Elasticsearch Grails 插件 - 示例应用Elasticsearch Grails 插件的示例应用程序。 插件主页由 Noam Y. Tenne 维护并托管在 。为什么? 如果您习惯了 grails 但从未使用过 ,那么安装插件后您可能会有点迷茫。 ...
ElasticSearch Grails 插件有一个新的维护者! 请浏览 Noam Y. Tenne fork 以获取插件源代码的新更新: 此版本的主要新功能之一是能够通过插件使用任何 gorm-datastore, 所以你不再绑定到Hibernate插件。 虽然 ...
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
插件文档该插件用作现有Foursquare API的grails包装器。 该插件提供的实用程序在与Foursquare API交互时可提供更丰富和连贯的体验。 与传统的API调用相比,使用此插件访问Foursquare API可以得到“自定义”且高度...
What’s Acegi Security How to use Acegi on Grails using Grails Domain class Beans to support Acegi ... Grails Acegi Plugin Setting up Acegi Plugin Secure your Ajax Secure your Service
该插件与Grails 2.5.x(支持JDK8的Grails的第一个版本)兼容。 提供将输入绑定到Java 8 Temporal的功能。 支持Java 8时间类型的JSON和XML呈现。 添加依赖项以帮助持久化Java 8 Temporal。 如何安装 在“插件”...
它带有一个控制器,用于处理传入的 dolphin 请求,并且还配置了所需的 spring-bean。 还包括opendolphin.js ,以便您可以创建基于 html/gsp 的客户端和/或基于 Java 的客户端(JavaFX、Swing 等) (针对 grails ...
prestige.zip,android的mvc模式,android的代码生成驱动的mvc模式。
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
学Groovy,Grails 与学Java一样,在实战之前需要搭建开发环境,您可以在 Groovy轻松入门--搭建Groovy开发环境 学习到如何搭建Groovy环境,之后我会讲一下如何搭建Grails环境,然后手把手地写个Demo程序告终,我还会...
Grails入门指南中文pdf -- 针对grails1.0.4更新,附加idea8 开发grails的流程
本文内容包括:ShortenUrl插件简介创建TinyUrl类测试TinyUrl类创建IsGd类创建ShortenUrl服务打包并部署插件结束语下载参考资料在这个“精通Grails”系列中,ScottDavis将向您展示如何创建您自己的Grails插件。...
实际上,一个grails插件和一个grails应用基本是完全一样的,同样可以使用grails run-app命令来运行。区别仅在于一个插件的根目录下需要提供一个fooplugin.groovy文件,提供插件的一些描述信息。