
22 Aug
2024
22 Aug
'24
7:37 p.m.
您好,我有个项目从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结果集中,所有列名变为大写?