您好,我有个项目从Oracle迁移至opengauss,该项目为java项目,采用框架spring+mybatis。
项目中好多SQL在mybatis中返回数据类型为java.util.Map,这些SQL以前查询Oracle,返回数据集列名为大写,迁移至opengauss后,返回数据集列名变小写,导致原应用程序无法正常读取结果集。
如SQL:select col1, col2 from tab
查询Oracle数据表返回类似以下数据集:
[{"COL1":"xx","COL2":"xx"} ...]
迁移至opengauss后返回类似下数据集:
[{"col1":"xx","col2":"xx"} ...]
有个办法是,通过增加列别名实现返回数据集列名为大写,将SQL改为以下格式:
select col1 as "COL1", col2 as "COL2" from tab
采用该方法,考虑到项目中SQL太多,全部修改需要很大工作量。
还有办法是添加Mybatis新的ObjectWrapperFactory派生类,将Map中小写key改为大写key,但该方法会影响到类似以下SQL结果集:
select col1 as "col1", col2 as "col1" from tab
该方法会将这些SQL结果集列名全部变为大写,导致原程序无法正常读取数据。
想问一下,是否有快捷办法,让mybatis读取opengauss,如果SQL中未指定带双引号别名,返回的java.util.Map结果集中,所有列名变为大写?