关于insert或update时确定哪些列参与到insert或update中
最后更新:2023-10-18 20:57:12
|
状态:未完成
service.insert(String table, DataRow row, String ... columns)
service.update(String table, DataRow row, String ... columns)
中columns的解析
/** * 确认需要插入的列 * @param obj Entity或DataRow * @param columns 提供额外的判断依据 * 列可以加前缀 * +:表示必须插入 * -:表示必须不插入 * ?:根据是否有值 * * 如果没有提供columns,长度为0也算没有提供 * 则解析obj(遍历所有的属性工Key)获取insert列 * * 如果提供了columns则根据columns获取insert列 * * 但是columns中出现了添加前缀列,则解析完columns后,继续解析obj * * 以上执行完后,如果开启了ConfigTable.IS_AUTO_CHECK_METADATA=true * 则把执行结果与表结构对比,删除表中没有的列 * @return List */ public List<String> confirmInsertColumns(String dst, Object obj, String ... columns) /** * 确认需要更新的列 * @param row DataRow * @param columns 提供额外的判断依据 * 列可以加前缀 * +:表示必须插入 * -:表示必须不插入 * ?:根据是否有值 * * 先DataRow解析出必须更新的列与colums中必须更新的列合并 * 再从DataRow中解析出必须忽略的列与columns中必须忽略更新的列合并 * DataRow.put时可以设置 必须更新(插入)或必须忽略更新(插入) put("+KEY", "VALUE") put("-KEY", "VALUE") * * 如果提供了columns并且长度>0则不遍历row.keys * 如果没有提供columns 但row.keys中有必须更新的列 也不再遍历row.keys * 其他情况需要遍历row.keys * * 以上执行完后,如果开启了ConfigTable.IS_AUTO_CHECK_METADATA=true * 则把执行结果与表结构对比,删除表中没有的列 * @return List */ public List<String> confirmUpdateColumns(String dest, DataRow row, String ... columns)