insert/update Map时大小写的问题

最后更新:2023-11-15 05:30:30 | 状态:未完成
在insert/update时如果提供的是List<Map>或Map参数时有可能因为Map的key与列名不一致导致取值失败的问题。因为map严格区分大小写,put("id",1)用get("ID")当然是取不出来了

如果大小写不一致,可以转换成DataSet<DataRow>结构,如
ConfigTable.IS_AUTO_CHECK_METADATA = true;
List list = new ArrayList();
Map<String,Object> map = new HashMap<>();
map.put("ID", "12");
map.put("age", "3");
list.add(map);
//map区分大小写 所以转换成DataSet 可以忽略或兼容 大小写 下划线 驼峰
//service.insert(table, new DataSet(list));
service.save(table, new DataSet(list));
以上代码开启了元数据检测,就是在执行SQL前检测一下表中实际的列,如果有表中不存在的列会被忽略。

insert或update过程中DataRow可以忽略大小写,下划线,驼峰格式,也就是get("userId") get("USER_ID") get("userid")有可以成功取值

如果是单个Map也可以new DataRow(map);转换成DataRow

为什么不在insert/update时兼容一下大小写呢?
因为通常情况下只有在性能要求比较高时才会用到list,map结构。这个过程去兼容大小写对性能影响很明显。

最近更新 搜索 提交