insert/update过程中列的控制

最后更新:2023-11-15 05:30:10 | 状态:未完成
默认情况下只会处理不为空的列,更新时不更新主键
由于数据来源多种多样,有可能是从别的表中查询的也有可能从第三系统获取或java中生成,
同一组数据可能需要同时插入不同的表,但列不同,这时需要设置insert/update的列
可以按以下规则设置,insert与update规则一样
如果有ConfigStore也可以通过ConfigStore.columns(String ... columns)或columns(List<String> colums)设置
-表示忽略 +表示必选 

DataRow row = new DataRow(); //这里只是用DataRow举例,可以是Entity或Collection
row.put("id",1);
row.put("name","Z");
row.put("code", null);

//默认只插入不为空的列
//INSERT INTO CRM_USER(ID,NAME) VALUES (?,?)
service.insert("CRM_USER", row);

row.put("id",2);
//-表示忽略 +表示必选  其他列正常处理
//INSERT INTO CRM_USER(NAME,CODE) VALUES (?,?)
service.insert("CRM_USER", row, "-id","+code");

//只插入name  国为没有-+出现,所以不处理其他列
//INSERT INTO CRM_USER(NAME) VALUES (?)
service.insert("CRM_USER", row, "name");

//INSERT INTO CRM_USER(NAME) VALUES (?)
service.insert("CRM_USER", row, "-id");

需要区别的是 如果在指定的列中没有出现+-则只处理指定的这几列,其他所有未指定的列忽略,反之如果出现了+或-则其他未指定的列按默认规则处理

另外ConfigTable中还有几个全局变量可以控制默认方式
	public static boolean IS_UPDATE_NULL_COLUMN							= false			;	// DataRow是否更新nul值的列(针对DataRow)
	public static boolean IS_UPDATE_EMPTY_COLUMN						= false			;	// DataRow是否更新空值的列
	public static boolean IS_INSERT_NULL_COLUMN							= false			;	// DataRow是否插入nul值的列
	public static boolean IS_INSERT_EMPTY_COLUMN						= false			;	// DataRow是否插入空值的列
	public static boolean IS_UPDATE_NULL_FIELD							= false			;	// Entity是否更新nul值的属性(针对Entity)
	public static boolean IS_UPDATE_EMPTY_FIELD							= false			;	// Entity是否更新空值的属性
	public static boolean IS_INSERT_NULL_FIELD							= false			;	// Entity是否更新nul值的属性
	public static boolean IS_INSERT_EMPTY_FIELD							= false			;	// Entity是否更新空值的属性
最近更新 搜索 提交