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

Grails3 REST使用Postgis和JTS地理类

阅读更多

折腾好几天,趟了几个坑,终于搞成了。废话不多说,直接上结果。

 

一、为了支持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增删改查地理信息了。写的比较简略,主要用于记录。

分享到:
评论
1 楼 fatalwing 2016-05-25  
请教博主一个与此文无关的问题,原来用grails2.x的时候,静态文件html、css、js、image等等都是放在web-app下,现在改用grails3,这个文件夹没了,不想用Asset Pipeline Plugin,官方文档说可以放在src/main/resources/public或者src/main/webapp下,可是亲测不管用。不知道博主有没有试过?或者有无其他办法?

相关推荐

    Grails开发之(Rest教程).pdf

    在安全性配置部分,提及了org.grails.plugins:spring-security-core和org.grails.plugins:spring-security-rest,这代表了Grails项目中将使用Spring Security来管理安全问题,包括认证和授权,以及Spring Security ...

    Grails开发之(Rest教程).docx

    在这个教程中,我们将探讨如何配置项目、创建REST服务以及使用Grails的特性来实现RESTful API。 首先,我们需要配置`build.gradle`文件,这是Grails项目的核心配置文件。在本例中,我们看到项目版本为"0.1",组名...

    grails3 CAS链接接数据库

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

    grails使用freemarker.rar

    总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的关系映射,特别是“one2many”关系。通过学习这些知识,开发者可以更有效地构建Grails应用,并利用FreeMarker...

    grails-rest-client-builder:使用Spring的RestTemplate的REST客户端插件

    Rest Client Builder ... 构造和使用REST“动词”之一。 GET请求: def resp = rest.get("http://grails.org/api/v1.0/plugin/acegi/") 响应是一个Spring 。 有一些获取JSON的便捷方法: resp.json instanceof

    Grails 和 jQuery开发实例

    在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...

    Groovy和Grails配置方法

    Groovy和Grails的结合使用为开发者提供了一个高效且功能强大的开发平台,尤其是在Java平台上进行Web应用开发时更是如此。希望本教程能够帮助初学者快速入门Groovy和Grails的使用,并为后续的深入学习打下坚实的基础...

    一步一步学grails(3)

    Grails 是一种基于 Groovy 的开源全栈 Web 框架,它利用了 Groovy 和 Java 平台的强大功能来简化 Web 开发过程。本教程以一个实际项目为例,介绍如何使用 Grails 来开发 Web 应用程序。 #### 二、Grails 项目初始化...

    Grails Grails Grails

    5. **构建工具**:Grails 使用Gradle作为其构建工具,允许自定义构建流程和依赖管理。 **Grails1.1中文文档** 《Grails1.1中文文档》是Grails 1.1版本的官方中文指南,包含了框架的详细介绍、安装指南、基本概念、...

    grails中文入门简介

    Grails是一个基于Groovy语言的全栈框架,它遵循约定优于配置的原则,并且紧密集成Spring和Hibernate等流行的Java库,简化了开发流程。Grails在IT行业中尤其受到重视,因为它能够帮助开发者快速搭建并部署基于MVC模式...

    Eclipse下搭建Grails项目

    - 由于Grails项目涉及GSP(Groovy Server Pages)文件,推荐使用包含JSP编辑器的Eclipse JEE版本。如果你对JSP语法熟悉且内存有限,也可选择Classic版本。 - 安装Eclipse 3.4.0 JEE版本或其他支持JSP编辑的最新...

    使用 Grails 快速开发 Web 应用程序

    在了解了Grails的基本结构后,可以通过创建简单的控制器和领域类来实现基本功能。例如,创建一个用于联系人管理的控制器和领域类,处理CRUD操作。Grails的自动化工具如GORM(Grails Object-Relational Mapping)将...

    grails3-rest-sample:使用 Grails 3 实现的简单 REST API。SpringIO15 中使用的代码

    【标题】"grails3-rest-sample" 是一个基于 Grails 3 框架构建的简单 RESTful API 示例项目,这个项目在 SpringIO15 大会上被用作示例代码进行展示。REST(Representational State Transfer)是一种设计网络应用程序...

    Grails权威指南 中文版

    本书的作者是Grails项目负责人Graeme Keith Rocher,他将自己对于Grails框架的深刻理解和使用经验编纂成书,以便向读者全面介绍这一框架的使用和优势。 Grails框架基于Groovy语言,而Groovy语言是一种运行在Java...

    在Eclipse里使用Grails类创建工具.pdf

    在深入探讨如何在Eclipse环境中使用Grails类创建工具之前,我们先简要回顾一下Grails框架及其核心特性。Grails是一款基于Groovy语言的高性能Web应用开发框架,它遵循约定优于配置的原则,极大地简化了Web应用的开发...

    111D:\keke\grails指南\笔记\1111111.txt,grails 初学者,使用说明的。

    创建领域类(Domain Class)即可实现数据持久化,例如,创建一个名为Book的领域类,定义其属性如title、author等,Grails会自动为其生成相应的数据库表和增删查改方法。 在提供的【部分内容】中,`println...

    Grails 3开发邮件发送功能

    整体来看,Grails 3开发邮件发送功能需要对邮件发送协议和Grails框架有一定的了解,同时,还需要对配置文件和控制器编程有一定的熟悉。通过上述步骤和注意事项的遵循,可以较为高效地在Grails 3项目中集成邮件发送...

    grails中文使用手册

    3. **GORM(Grails Object Relational Mapping)**:Grails的数据库访问层使用GORM,它提供了强大的ORM功能,使得Grails能够与各种关系型数据库进行无缝对接。GORM支持动态和静态领域类,以及HQL(Hibernate Query ...

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

    3. **配置数据源类**:Grails 3使用Spring Boot,所以数据源的配置也遵循Spring Boot的规则。这意味着你需要在`build.gradle`文件中包含对应的数据库驱动依赖。例如,对于MySQL,你可能需要添加: ```gradle ...

Global site tag (gtag.js) - Google Analytics