环境

polardb版本

<dependency>
<groupId>com.aliyun</groupId>
<artifactId>polardb-jdbc18</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${lib.dir}/polardb-jdbc18.jar</systemPath>
</dependency>

mybatis版本

直接使用springboot引入

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>

问题描述

javax.servlet.ServletException: org.springframework.dao.DataIntegrityViolationException:
### The error may exist in com/xx/templatedef/dao/oracle/XXTemplateDef_SqlMap.xml
### The error may involve com.xx.templatedef.dao.XXTemplateDefDao.selectTemplateDefByCategoryAndState-Inline
### The error occurred while setting parameters
### SQL: select * from act_xx_tem_def where category=? and deploy_state=1
### Cause: com.aliyun.polardb.util.PSQLException: 不良的类型值 long :
com.aliyun.polardb.util.PSQLException: canot convert the column of type BYTEA to requested type long;

原因

mybatis查询act_tem_def表涉及到blob字段(content_bytes),

默认的BlobTypeHandler的getBlob方法不适用, 需要重写handler

解决方案

  1. 在业务下重写BlobTypeHandler, 获取getBinaryStream然后转换byte数组

  2. mapper.xml -> resultmap中, 加入下述转换

    <result column="CONTENT_BYTES" property="contentBytes" jdbcType="BLOB"
    typeHandler="com.example.springbootpolardb.handler.PolarDbBlobTypeHandler"/>
  3. 转换逻辑

    public static byte[] toByteArray(InputStream input) throws IOException {
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    byte[] buffer = new byte[4096];
    int n = 0;
    while (-1 != (n = input.read(buffer))) {
    output.write(buffer, 0, n);
    }
    return output.toByteArray();
    }

代码

迁移polardb问题一的更多相关文章

  1. 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云

    5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL.PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成.据估算,云上成本 ...

  2. PolarDB · 新品介绍 · 深入了解阿里云新一代产品 PolarDB

    背景意义 云计算为如今的互联网时代提供了更多的计算能力,乃至创造能力,关系型数据库作为所有应用不可或缺的重要部件,开箱即用,高性价加比特性的云数据库深受开发者的喜爱.作为一线的开发和运维人员,在阿里云 ...

  3. 你有什么理由还不选择阿里云服务器呢--从阿里云发布自研商用关系型数据库POLARDB想到的

    最近几天,阿里云发布自研商用关系型数据库POLARDB的消息可谓是重磅炸弹啊.借用官方宣传的话就是:6倍性能于MySQL并100%兼容/100TB存储容量/2分钟创建只读副本/3分钟创建容灾实例,第三 ...

  4. POLARDB · 最佳实践 · POLARDB不得不知道的秘密

    ## 前言 POLARDB作为阿里云下一代关系型云数据库,自去年9月份公测以来,收到了不少客户的重点关注,今年5月份商业化后,许多大客户开始陆续迁移业务到POLARDB上,但是由于POLARDB的很多 ...

  5. 云数据库PolarDB(一)

    一.出现的背景及PolarDB简介 阿里云,中国第一家拥有完整云计算能力的企业. 2015年,在计算界的奥运会Sort Benchmark中,阿里云计算100TB数据排序只用了不到7分钟,把Apach ...

  6. 云数据库POLARDB优势解读之①——10分钟了解

    什么是POLARDB POLARDB 是阿里云自研的下一代关系型分布式数据库,100%兼容MySQL,之前使用MySQL的应用程序不需要修改一行代码,即可使用POLARDB. POLARDB在运行形态 ...

  7. 比MySQL快6倍 深度解析国内首个云原生数据库POLARDB的“王者荣耀”

    随着移动互联网.电子商务的高速发展,被使用最多的企业级开源数据系统MySQL面临着巨大挑战——为迎接“双11"的高并发要提前做好分库分表;用户不断激增要将读写分离才能应对每天上亿次的访问,但 ...

  8. 用POLARDB构建客到智能餐饮系统实践

    在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中.智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点.本文中果仁软件联合创始人& ...

  9. 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)

    PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存 ...

  10. 什么是云数据库POLARDB

    POLARDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,目前兼容三种数据库引擎:MySQL.Oracle.PostgreSQL.计算能力最高可扩展至1000核以上,存储容量最高可达 100T ...

随机推荐

  1. 从几个sample来学习Java堆,方法区,Java栈和本地方法栈

    最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有 ...

  2. Java语言的动态性支持

    一.脚本语言的支持     JSR 223中规范了在Java虚拟机上运行的脚本语言与Java程序之间的交互方式.JSR 233是JavaSE6的一部分,在Java表中API中的包是javax.scri ...

  3. python系统模块之re

    正则模块re: 元字符: 字符 描述 . 除换行符外的任意字符 \ 转义字符 [...] 字符集合,匹配任务其中一个 \d 数字:[0-9] \D 非数字:[^\d] \w 单词字符[A-Za-z0- ...

  4. elasticsearch权限验证(Auth+Transport SSL)

    转载:https://knner.wang/2019/11/26/install-elasticsearch-cluster-7-4.html 在新版的Elastic中,基础版(免费)的已经提供了基础 ...

  5. ProWindow的控制按钮状态

    在使用ArcGIS.Desktop.Framework.Controls.ProWindow时,有网友发现,设置窗口调整模式后,窗口的控制按钮是不全的. ProWindow win = new Pro ...

  6. Docker基础教程快速入门 Linux CentOS安装与使用Docker容器

    Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...

  7. Qt编写安防视频监控系统51-功能激活

    一.前言 随着视频监控系统本身功能的增多,以及用户定制功能的增多(比如视频监控系统摇身一变成了机器人监控.无人机监控.挖掘机监控等),除了提供工作模式这个切换开关,还需要对不同的工作模式启用禁用不同的 ...

  8. Linux 下挂载群晖 NAS 硬盘拓展空间(NFS)

    在群晖 NAS 上配置 开启 NFS 服务 打开群晖的 设置 - 文件服务 - NFS,把 NFS 服务勾选上,协议选最新即可. 配置文件夹的 NFS 权限 在 设置 - 共享文件夹 下,选择需要开启 ...

  9. [转]BeanUtils.copyProperties使用总结以及注意事项

    1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get.set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术上肯定有方法能解决这个问题,所以查阅了一些资料发现了Bean ...

  10. 在用Android StudioBuild项目时,提示:Could not resolve all files for configuration ':classpath'.Could not find com.android.tools.

    在用Android StudioBuild项目时,提示:Could not resolve all files for configuration ':classpath'.Could not fin ...