SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询

本篇文章主要讲解SpringBoot+MyBatis+PostgreSQL+PostGis实现对存储数据的查找,包括对一般普通的全部查找,id查找,条件查找,分页查找,以及对空间信息的圆形区域查找,多边形区域查找。

本篇文章会直接讲解查询,是(SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素的增删改)后续,建议读本文之前,先读一下这篇文章。

在文章讲解中,我只展示controller层以及myBatis的 mapper.xml文件部分,dao层以及service层相对较简单,文章中不做展示,全部工程代码在GitHub上()。

1.全部查询

controller层

/**
     * 查询全部信息
     * @return
     */
    @GetMapping("/list")
    public List findAll(){
        return mapService.findAll();
    }

mapper.xml文件

测试结果

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第1张图片

2.条件查找

controller层

/**
     * 条件查找
     * @param mapElement
     * @return 复合条件的地图元素
     */
    @GetMapping("/condition")
    public List findMapElementByCondition(MapElement mapElement){
        return mapService.findMapElementByCondition(mapElement);
    }

mapper.xml


    

测试结果

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第2张图片

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第3张图片

3.分页查找

分页查找,借助了一个pagehelper的插件,官方GitHub地址为https://github.com/pagehelper/Mybatis-PageHelper。

1.添加pom.xml关于pagehelper的插件


            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.12
            
                
                    org.mybatis.spring.boot
                    mybatis-spring-boot-starter
                
            
        

2.application.properties配置

pagehelper.helperDialect=postgresql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

3.controller层

/**
     * 分页查找
     * @param currentPage 当前在第几页
     * @param pageSize 每页数据条数
     * @return 带PageInfo信息的返回结果
     */
    @GetMapping
    public PageInfo findByPageCondition(int currentPage, int pageSize) {
        PageHelper.startPage(currentPage, pageSize);
        List list = mapService.findAll();
        return new PageInfo<>(list);
    }

方法包含两个参数,currentPage为当前在第几页,pageSize为每页显示的数据条数。

4.测试结果

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第4张图片

测试结果包含的参数意思在GitHub源码有介绍,地址为:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/src/main/java/com/github/pagehelper/PageInfo.java

4.多边形区域查找

controller层

/**
     * 多边形区域查找
     * @param geometry 多边形参数
     * @return 满足条件的结果
     */
    @GetMapping("/polygon")
    public List findByMapElementPolygon(String geometry){
        return mapService.findMapElementByPolygon(geometry);
    }

myBatis的mapper.xml配置


    

测试结果

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第5张图片

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第6张图片

此处测试结果我做了对比,第二个多边形区域与第一个多边形区域相比,多了一组参数,添加了一条边,从而查询结果包含了北京大学。

5.圆形区域查询

controller层

/**
     * 圆形区域查找
     * @param longitude 圆形区域圆心之经度
     * @param latitude 圆形区域圆心之纬度
     * @param radius 区域半径,单位为km
     * @return 以给定点为原型,radis为半径的区域中满足条件的元素的集合
     */
    @GetMapping("/circle")
    public List findByMapElementCircle(double longitude, double latitude, double radius){
        String geometry = "(" + longitude + " " + latitude + ")";
        //单位转换
        double radiusMeter = radius * 1000;
        return mapService.findMapElementByCircle(geometry, radiusMeter);
    }

myBatis的mapper.xml层


    

测试结果

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第7张图片

如上图所示,圆形区域的圆心点为清华大学,经度为116.327,纬度为40。在地图上,北大与北航的的地理位置如图所示。

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第8张图片

SpringBoot+MyBatis+PostgreSQL+PostGis实现地理几何元素查询_第9张图片

6.总结

本文主要介绍了使用myBatis对数据进行各种查找,其中重点应该放在分页查找,圆形区域查找,多边形区域查找。当中涉及很多额外的知识,需要自己先有一个了解。在代码部分,只简单列举了一部分代码,关于整个工程的完整代码,已经放在GitHub上,需要按照自己实际,对配置文件做一定更改。

最后,如有不妥之处,还望指正,希望能一起进步。

你可能感兴趣的:(myBatis,PostgreSQL,数据查找)