关于insert或update时确定哪些列参与到insert或update中
最后更新:2025-07-24 11:08:52
|
状态:未完成
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)