91名师指路-头部
91名师指路

mybatis-plus 支持postgresql数据库中的geometry类型

由于某些原因,现在不支持支付宝支付,如需要购买源码请加博主微信进行购买,微信号:13248254750

背景:我们需要将A表的geom(边界)查询出来,然后insert到B表中。默认情况下mybatis-plus 是不支持geometry类型的,有如下的几种方法来实现,大家可以根据自己的实际情况来进行处理。

方法一:假设我需要查询A表的geometry字段,然后再insert到B表中,则可以直接在db层面进行,如insert into xxx select xxx,类似这样的sql来进行处理。

方法二:可以使用postgis-jdbc的方式来进行处理,引入postgis-jdbc这个jar,然后再进行后续的处理,这里不讲诉使用方法,大家自行百度查找资料。

方法三:将A表的geometry字段转换成geojson即String类型的字符串,然后将geojson插入到B表中,然后使用update语句将geojson字段转换成geometry即可。

方法四:也就是我们今天的主角。采用mybatis-plus的方式来将geometry类型的数据插入到表中。


一:引入pom

<dependency>
<groupId>com.eyougo</groupId>
<artifactId>mybatis-typehandlers-postgis</artifactId>
<version>1.0</version>
</dependency>


二:在application.yml中配置 type-handlers-package

mybatis-plus:
type-aliases-package: com.mszl.entity # 所有Entity别名类所在包
mapper-locations:
- classpath:mapper/**/*.xml # mapper映射文件
type-handlers-package: com.eyougo.mybatis.postgis.type # mybatis支持geometry类型
configuration:
map-underscore-to-camel-case: true # 设置实体类中的属性驼峰转换为下划线(和config-location不能并存)
call-setters-on-nulls: true # 解决map中返回的字段为空时不显示key的问题


三:我们从A表查询出geometry的数据,我们在A表的实体里面用String 来进行接收。如下

private String geom;

我们在B表的实体中需要注意不能使用lombok的 @Data注解,因为如果使用了会报错。我们需要手动为B表的实体生产get和set方法。并且我们需要insert的geometry 还需要在get和set中写如下的代码。如B表的geometry如下

    private Geometry gdGeom;

public String getGdGeom() throws SQLException {
PGgeometry geomtry = new PGgeometry(gdGeom);
if (geomtry == null) {
return null;
}
StringBuffer sb = new StringBuffer();
geomtry.getGeometry().outerWKT(sb);
return sb.toString();
}

public void setGdGeom(String gdGeom) throws SQLException {
PGgeometry pg=new PGgeometry(gdGeom);
this.gdGeom=pg.getGeometry();
}


四:xml

1)在xml中不能使用#来接收参数,需要采用 $ 符号来接收

2)在对geometry进行inset或update时需要采用 ST_GeomFromText函数来进行转换。
ST_GeomFromText('${item.gdGeom}', 4326)


参考资料:

1)https://blog.csdn.net/u013323965/article/details/86650990?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_aggregation-15-86650990.pc_agg_rank_aggregation&utm_term=geometry+mybatisplus&spm=1000.2123.3001.4430

2)https://github.com/eyougo/mybatis-typehandlers-postgis

3)https://www.jianshu.com/p/e27e28996ad1




2021-11-04 09:20:24     阅读(5432)

名师出品,必属精品    https://www.91mszl.com

联系博主    
用户登录遮罩层
x

账号登录

91名师指路-底部