原 mybatis-plus 支持postgresql数据库中的geometry类型
版权声明:本文为博主原创文章,请尊重他人的劳动成果,转载请附上原文出处链接和本声明。
本文链接:https://www.91mszl.com/zhangwuji/article/details/1350
方法一:假设我需要查询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类型的数据插入到表中。
<dependency>
<groupId>com.eyougo</groupId>
<artifactId>mybatis-typehandlers-postgis</artifactId>
<version>1.0</version>
</dependency>
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的问题
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();
}
1)在xml中不能使用#来接收参数,需要采用 $ 符号来接收
2)在对geometry进行inset或update时需要采用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
博主信息