mybatis写postgis原生sql需要加强转类型 以及 配置geometry类型转换

news2024/11/26 4:53:55

mybatis类型转换器处理PostGis数据库geometry类型转换_SomeOtherTime的博客-CSDN博客_java mybatis postgis

在navicate写insert into "district" (name,code,position) VALUES('cesh2i3','ac1v3','SRID=4326;MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0)))'

不会报错。

在mybatis代码中写insert into "district" (name,code,position) VALUES('cesh2i3','ac1v3','SRID=4326;MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0)))'会报错

相当于写了insert into "district" (name,code,position) VALUES('cesh2i3','ac1v3','SRID=4326;MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0)))'::VARCHAR) 

正确写法:

insert into "district" (name,code,position) VALUES('cesh2i113','ac1v113','SRID=4326;MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0)))'::geometry)   

因为

同样一句sql,PG的JDBC发出的sql格式与navicate发出的不一样,这就是PG的JDBC严格检查类型的原因。他用了postgresql的 PREPARED语句高效率

PostgreSQL prepare的使用 - 走看看

抓包分析

PG的JDBC:

 navicate:

新增数据时在使用自动类型转换时要添加包

mybatis类型转换器处理PostGis数据库geometry类型转换_SomeOtherTime的博客-CSDN博客_java mybatis postgis

        <!-- 这里会补充mybatis缺少的JDBC-Type如postGis中的geometry类型 -->
        <dependency>
            <groupId>net.postgis</groupId>
            <artifactId>postgis-jdbc</artifactId>
            <version>2.5.0</version>
        </dependency>

否则会报错

设置PG驱动自定义类型:

org.postgresql.jdbc.TypeInfoCache#getPGType(java.lang.String)

通过上面oidStatement这句sql查出类型oid

SELECT pg_type.oid, typname   FROM pg_catalog.pg_type   LEFT   JOIN (select ns.oid as nspoid, ns.nspname, r.r           from pg_namespace as ns           join ( select s.r, (current_schemas(false))[s.r] as nspname                    from generate_series(1, array_upper(current_schemas(false), 1)) as s(r) ) as r          using ( nspname )        ) as sp     ON sp.nspoid = typnamespace  WHERE typname = 'geometry'  ORDER BY sp.r, pg_type.oid DESC LIMIT 1

除了public和用户创建的模式之外,每个数据库都包含一个pg_catalog模式,它包含系统表和所有内置数据类型、函数、操作符

调用链,Hikari连接池是包装类维护了PgprepareStatement,再调用setObject

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计高校学生信息采集系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

虹科案例 | 光热测厚技术助力PSA无底漆涂装方案

法国标致雪铁龙集团&#xff08;PSA Peugeot Citron&#xff09;最开始是生产胡椒研磨机&#xff0c;然后将其产品组合扩展到自行车等&#xff0c;现在已经是欧洲第二大汽车制造商。巴黎郊外的普瓦西&#xff08;Poissy&#xff09; 工厂安装了法国首个紧凑型水性喷漆工艺&…

漏洞预警| ThinkPHP多版本存在远程代码执行漏洞

棱镜七彩安全预警 近日网上有关于开源项目 ThinkPHP 存在远程代码执行漏洞&#xff0c;棱镜七彩威胁情报团队第一时间探测到&#xff0c;经分析研判&#xff0c;向全社会发起开源漏洞预警公告&#xff0c;提醒相关安全团队及时响应。 项目介绍 ThinkPHP是一个快速、兼容而且…

制定项目管理计划的10个步骤

一个协调完美、透明、时间表具体且准确的项目管理计划&#xff0c;将大大有助于你的项目按时完成。以下是制定项目计划的10个基本步骤。 第1步&#xff1a;与利益相关者讨论计划和关键部分 项目计划由活动文件组成&#xff0c;这些文件为所有直接或间接参与项目的人提供指导。…

如何开通股票接口中的StockQuoteRecord功能?

股票接口中的StockQuoteRecord&#xff0c;也就是十档行情快照&#xff0c;在传统的行情软件中只能看到委托数量&#xff0c;而无法知道这些数据是如何形成的。 下面看一下股票接口StockQuoteRecord&#xff08;十档行情快照&#xff09;的说明&#xff1a; 字段名 类型 备…

【数集项目之 MCDF】(三) 仲裁器 arbiter

接下来进行仲裁器 arbiter的设计。根据设计文档&#xff0c;我们知道从输入总共有3个通道&#xff0c;而这三个通道很有可能都接收到数据可以进行发送。而arbiter就是综合优先级、是否有包可以发送等因素&#xff0c;选择一个通道来进行发送。形象的可以将arbiter比喻成“一个多…

FineReport可视化数据分析-图表对象属性

1.概述 1.1 单个系列对象属性 属性 类型 说明 this.points Array 当前系列的所有数据点 this.name String 当前系列的名字&#xff0c;跟图例显示的系列名一致 this.type String 当前系列的图表类型&#xff0c;目前包括的类型如下图所示&#xff1a; 1.2 单个数…

图解TCP_IP 第5版

图解TCP_IP 第5版1.7.1 面向有连接型与面向无连接型1.7.2 电路交换与分组交换1.7.3 单播、广播、多播和任播1.9.1 通信媒介1.9.1 传输速率、带宽和吞吐量1.9.2 网卡1.9.3 中继器与集线器1.9.4 网桥/2 层交换机1.9.5 路由器/3层交换机1.9.6 4~7 层交换机1.9.7 网关2.2.1 TCP/IP …

matplotlib安装及使用

目录 1、Matplotlib简介 2、Matplotlib安装 3、Matplotlib导入 4、Matplotlib基本应用 5、画图种类 5.1、Scatter散点图 5.2、条形图 5.3、等高线图 5.4、Image图片 5.5、3D图像 6、多图合并显示 6.1、Subplot多合一显示 6.2、SubPlot分格显示 6.3、图中图 6.4、…

保护大数据安全的十大行为准则

大数据安全是指在存储、处理和分析过于庞大和复杂的数据集时&#xff0c;采用任何措施来保护数据免受恶意活动的侵害&#xff0c;传统数据库应用程序无法处理这些数据集。大数据可以混合结构化格式(组织成包含数字、日期等的行和列)或非结构化格式(社交媒体数据、PDF 文件、电子…

YourKit Java Profiler 命令行工具自动弹出

YourKit Java Profiler 命令行工具自动弹出 识别处理器和内存从来都不容易。 YourKit为程序开发了两个阶段的开发和开发革命。 YourKit Java Profiler软件的功能和特点&#xff1a; 以任何方式为团队和公司在开发、测试和生产中&#xff0c;以不同的操作系统、本地和远程方式指…

Python多项分布随机数的生成

文章目录二项分布多项分布函数概率密度函数(PDF)备注binomial(n, p)P(k)(nk)pk(1−p)n−kP(k) \binom{n}{k}p^k(1-p)^{n-k}P(k)(kn​)pk(1−p)n−k二项分布poisson([lam])f(k)λke−λk!f(k)\frac{\lambda^ke^{-\lambda}}{k!}f(k)k!λke−λ​泊松分布multinomial(n, pvals)多…

解放双手!推荐一款阿里开源的低代码工具,YYDS!

之前分享过一些低代码相关的文章&#xff0c;发现大家还是比较感兴趣的。之前在我印象中低代码就是通过图形化界面来生成代码而已&#xff0c;其实真正的低代码不仅要负责生成代码&#xff0c;还要负责代码的维护&#xff0c;把它当做一站式开发平台也不为过&#xff01;最近体…

AIOps是什么?为什么用它?

由于快速的数字化转型给 IT 企业组织带来了很大的压力&#xff0c;要求他们更加主动和敏捷&#xff0c;DevOps 原则和实践一直是宝贵的资源。但是&#xff0c;为了保持领先地位&#xff0c;企业需要更强大的解决方案。那么&#xff0c;答案是什么&#xff1f;当然是 AIOps&…

现在ChatGPT可以使用谷歌插件进行快速交互访问了!

文章目录前言效果原理部署过程获得ChatGPT session token克隆代码库设置ChatGPT session token项目安装启动项目谷歌浏览器安装插件报错问题前言 这个ChatGPT虽然功能很强大&#xff0c;但是使用的时候每次都得去打开对应的网站&#xff0c;把自己想问的问题复制过去&#xff…

简易Qt图片查看器

本篇使用Qt来实现一个可以查看任意目录下图片的图片查看器&#xff0c;可以电脑中任意目录下图片的查看&#xff0c;并且可以通过鼠标滚轮以及鼠标移动来实现图片的灵活放大、缩小&#xff0c;此外&#xff0c;在打开一个图片后&#xff0c;若该目录下还有其它图片&#xff0c;…

SpringBoot+Vue实现前后端分离的电影院管理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

004:搭建常规项目框架「Window、TabBar、NavigationController、ViewController」

常见App页面结构分析&#xff1a; 单页面展示&#xff1a; 列表页面的展示「UITableView」。滚动页面的展示「UIScrollow」。 多页面展示&#xff1a; 通过底部标签栏「TabBar」。通过Push栈的方式进行页面的切换。UITabBarController&#xff1a; 介绍&#xff1a;通过底部…

打响跨域/中央计算「攻坚」战,这些头部企业已经抢先布局

从域控架构到中央集成式架构&#xff0c;跨域融合已经加速到来&#xff0c;从单一域控制器&#xff0c;到多域融合中央计算&#xff0c;市场门槛进一步抬升&#xff0c;市场也进入新一轮「攻坚」阶段。 高工智能汽车研究院发布《2023-2025年智能网联产业趋势报告》显示&#x…

Flink Checkpoint 问题排查实用指南

在 Flink 中,状态可靠性保证由 Checkpoint 支持,当作业出现 failover 的情况下, Flink 会从最近成功的 Checkpoint 恢复。在实际情况中,我们可能会遇到 Checkpoint 失败,或者 Checkpoint 慢的情况,本文会统一聊一聊 Flink 中 Checkpoint 异常的情况(包括失败和慢),以及…