折腾好几天,趟了几个坑,终于搞成了。废话不多说,直接上结果。
一、为了支持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增删改查地理信息了。写的比较简略,主要用于记录。
相关推荐
在安全性配置部分,提及了org.grails.plugins:spring-security-core和org.grails.plugins:spring-security-rest,这代表了Grails项目中将使用Spring Security来管理安全问题,包括认证和授权,以及Spring Security ...
在这个教程中,我们将探讨如何配置项目、创建REST服务以及使用Grails的特性来实现RESTful API。 首先,我们需要配置`build.gradle`文件,这是Grails项目的核心配置文件。在本例中,我们看到项目版本为"0.1",组名...
标题中的“grails3 CAS链接接数据库”表明我们要讨论的是如何在Grails 3框架下集成CAS(Central Authentication Service)并实现与数据库的连接。Grails是一个基于Groovy语言的开源Web应用框架,而CAS是一种广泛使用...
总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的关系映射,特别是“one2many”关系。通过学习这些知识,开发者可以更有效地构建Grails应用,并利用FreeMarker...
Rest Client Builder ... 构造和使用REST“动词”之一。 GET请求: def resp = rest.get("http://grails.org/api/v1.0/plugin/acegi/") 响应是一个Spring 。 有一些获取JSON的便捷方法: resp.json instanceof
在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...
Groovy和Grails的结合使用为开发者提供了一个高效且功能强大的开发平台,尤其是在Java平台上进行Web应用开发时更是如此。希望本教程能够帮助初学者快速入门Groovy和Grails的使用,并为后续的深入学习打下坚实的基础...
Grails 是一种基于 Groovy 的开源全栈 Web 框架,它利用了 Groovy 和 Java 平台的强大功能来简化 Web 开发过程。本教程以一个实际项目为例,介绍如何使用 Grails 来开发 Web 应用程序。 #### 二、Grails 项目初始化...
5. **构建工具**:Grails 使用Gradle作为其构建工具,允许自定义构建流程和依赖管理。 **Grails1.1中文文档** 《Grails1.1中文文档》是Grails 1.1版本的官方中文指南,包含了框架的详细介绍、安装指南、基本概念、...
Grails是一个基于Groovy语言的全栈框架,它遵循约定优于配置的原则,并且紧密集成Spring和Hibernate等流行的Java库,简化了开发流程。Grails在IT行业中尤其受到重视,因为它能够帮助开发者快速搭建并部署基于MVC模式...
- 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...
在了解了Grails的基本结构后,可以通过创建简单的控制器和领域类来实现基本功能。例如,创建一个用于联系人管理的控制器和领域类,处理CRUD操作。Grails的自动化工具如GORM(Grails Object-Relational Mapping)将...
【标题】"grails3-rest-sample" 是一个基于 Grails 3 框架构建的简单 RESTful API 示例项目,这个项目在 SpringIO15 大会上被用作示例代码进行展示。REST(Representational State Transfer)是一种设计网络应用程序...
本书的作者是Grails项目负责人Graeme Keith Rocher,他将自己对于Grails框架的深刻理解和使用经验编纂成书,以便向读者全面介绍这一框架的使用和优势。 Grails框架基于Groovy语言,而Groovy语言是一种运行在Java...
在深入探讨如何在Eclipse环境中使用Grails类创建工具之前,我们先简要回顾一下Grails框架及其核心特性。Grails是一款基于Groovy语言的高性能Web应用开发框架,它遵循约定优于配置的原则,极大地简化了Web应用的开发...
创建领域类(Domain Class)即可实现数据持久化,例如,创建一个名为Book的领域类,定义其属性如title、author等,Grails会自动为其生成相应的数据库表和增删查改方法。 在提供的【部分内容】中,`println...
整体来看,Grails 3开发邮件发送功能需要对邮件发送协议和Grails框架有一定的了解,同时,还需要对配置文件和控制器编程有一定的熟悉。通过上述步骤和注意事项的遵循,可以较为高效地在Grails 3项目中集成邮件发送...
3. **GORM(Grails Object Relational Mapping)**:Grails的数据库访问层使用GORM,它提供了强大的ORM功能,使得Grails能够与各种关系型数据库进行无缝对接。GORM支持动态和静态领域类,以及HQL(Hibernate Query ...
3. **配置数据源类**:Grails 3使用Spring Boot,所以数据源的配置也遵循Spring Boot的规则。这意味着你需要在`build.gradle`文件中包含对应的数据库驱动依赖。例如,对于MySQL,你可能需要添加: ```gradle ...