jpa 也能直接写原生sql,原生sql,直接写postgis的函数,不多说
@Query(value = "select t from DemoPointDO t where st_contains(:polygon, t.point) is true", nativeQuery = true)
List<DemoPointDO> containsQuery1(@Param("polygon") Polygon polygon);
现在说两种不写原生sql去调用postgis的函数,这里以一个空间范围查询为例,查询该矩形里面的所有点。
一个最简单的表,id + 名称 + 空间点位
create table demo_point (
point_id varchar(36) not null primary key,
point_name varchar(32) not null,
location geometry
);
spring cloud、alibaba cloud版本和Spring boot版本如下
<spring-cloud.version>2021.0.5</spring-cloud.version>
<spring-boot.version>2.7.6</spring-boot.version>
<alibaba-cloud.version>2021.0.5.0</alibaba-cloud.version>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.lutuo.iot</groupId>
<artifactId>ltb-iot-equipment</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>demo-spatial</artifactId>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope></