折腾好几天,趟了几个坑,终于搞成了。废话不多说,直接上结果。
一、为了支持postgis,把Grails3默认的hibernate4改成hibernate5,添加jts支持地理信息,添加postgres-jdbc。这里不需要postgis的jdbc,这个搞了我好几天,最后发现去掉postgis的jdbc就OK了。
修改build.gradle
buildscript { ... dependencies { ... // classpath "org.grails.plugins:hibernate4:5.0.4" classpath "org.grails.plugins:hibernate5:5.0.5" } } dependencies { ... // compile "org.grails.plugins:hibernate4" // compile "org.hibernate:hibernate-ehcache" compile "org.grails.plugins:hibernate5" compile "org.hibernate:hibernate-core:5.1.0.Final" compile "org.hibernate:hibernate-ehcache:5.1.0.Final" compile 'org.hibernate:hibernate-entitymanager:5.1.0.Final' compile 'org.hibernate:hibernate-spatial:5.1.0.Final' compile 'com.vividsolutions:jts:1.12' // runtime "com.h2database:h2" runtime "org.postgresql:postgresql:9.4-1201-jdbc41" }
修改application.yml
dataSource: pooled: true jmxExport: true driverClassName: org.postgresql.Driver dialect: org.hibernate.spatial.dialect.postgis.PostgisDialect username: postgres password: environments: development: dataSource: dbCreate: create-drop url: jdbc:postgresql://localhost:5432/geoapi
修改driverClassName,添加dialect,修改dateSource.url
二、创建一个含有地理类的domain
package com.emg.api import grails.rest.* import org.grails.databinding.BindUsing import com.vividsolutions.jts.geom.Point import com.vividsolutions.jts.io.WKTReader @Resource() class Tbpoint { String poiname @BindUsing({obj, source -> new WKTReader().read(source['poi']) }) Point poi static mapping = { version false } }
@BindUsing是为了Data binding的时候能够正确处理jts类。还可以用其他方式,详见http://docs.grails.org/latest/guide/single.html#dataBinding
三、创建controller
package com.emg.api import grails.rest.* import static org.springframework.http.HttpStatus.* class TbpointController extends RestfulController { static responseFormats = ['json'] TbpointController() { super(Tbpoint) } }
controller是默认的,只是去掉了xml的输出。
四、修改gson,以适应jts地理类的输出。
在目录grails-app/views/tbpoint/下写如下几个gson文件
1、_tbpoint.gson
import com.emg.api.Tbpoint model { Tbpoint tbpoint } json { id tbpoint.id poiname tbpoint.poiname poi tbpoint.poi.toText() }
主要是把地理类toText()输出
2、index.gson
import com.emg.api.Tbpoint model { Iterable<Tbpoint> tbpointList } json tmpl.tbpoint(tbpointList ?: [])
3、show.gson
import com.emg.api.Tbpoint model { Tbpoint tbpoint } json tmpl.tbpoint(tbpoint)
至此,Grails RESTful就可以使用postgis增删改查地理信息了。写的比较简略,主要用于记录。
相关推荐
Grails开发之(Rest教程).pdf
Grails开发之(Rest教程).docx
Rest Client Builder ... 构造和使用REST“动词”之一。 GET请求: def resp = rest.get("http://grails.org/api/v1.0/plugin/acegi/") 响应是一个Spring 。 有一些获取JSON的便捷方法: resp.json instanceof
grails3-rest-sample 使用 Grails 3 实现的简单 REST API。SpringIO15 中使用的代码
Grails Grails Grails Grails Grails
Grails3配置logback日志.pdf
使用 Grails 和 jQuery 快速开发一个 Web Calendar 程序。
grails1.0开发框架3 类似于ruby on rails的框架。
我们知道,在 Grails 项目中使用Grails类创建工具如“grails create-domain-class”等,能 帮我们创建domain、service 和controller等类及它们的测试类及其他。因此,我们在Grails 项目 中常常是使用这些工具帮我们...
grails开发实践,欢迎下载使用 grails开发实践,欢迎下载使用 grails开发实践,欢迎下载使用
angularjs-grails-sample 一个使用AngularJS / Bootstrap作为前端并使用Grails作为REST API生产者的示例应用程序。 请阅读以获取更多详细信息。
D:\keke\grails指南\笔记\1111111.txt,grails 初学者,使用说明的。D:\keke\grails指南\笔记\1111111.txt,grails 初学者,使用说明的。D:\keke\grails指南\笔记\1111111.txt,grails 初学者,使用说明的。D:\keke\...
自己制作的《Grails开源框架 - 使用指南》CHM电子书
Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java...
freemarker是一个比较好用的java模板引擎,grails也对它有很好的支持,该资源大有用处。
去年早些时候写的一个项目驱动的grails入门教程。绝对原创。
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
Grails 3开发邮件发送功能,完整教程!超级实用,手把手教你接入邮件发送
grails-2.1.zip.001