insert/update Map时大小写的问题
最后更新:2024-05-13 05:30:00
|
状态:未完成
在insert/update时如果提供的是List<Map>或Map参数时有可能因为Map的key与列名不一致导致取值失败的问题。因为map严格区分大小写,put("id",1)用get("ID")当然是取不出来了
如果大小写不一致,可以转换成DataSet<DataRow>结构,如
因为通常情况下只有在性能要求比较高时才会用到list,map结构。这个过程去兼容大小写对性能影响很明显。
如果大小写不一致,可以转换成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结构。这个过程去兼容大小写对性能影响很明显。