insert/update过程中列的控制
最后更新:2024-05-10 05:30:01
|
状态:未完成
默认情况下只会处理不为空的列,更新时不更新主键
由于数据来源多种多样,有可能是从别的表中查询的也有可能从第三系统获取或java中生成,
同一组数据可能需要同时插入不同的表,但列不同,这时需要设置insert/update的列
可以按以下规则设置,insert与update规则一样
如果有ConfigStore也可以通过ConfigStore.columns(String ... columns)或columns(List<String> colums)设置
-表示忽略 +表示必选
由于数据来源多种多样,有可能是从别的表中查询的也有可能从第三系统获取或java中生成,
同一组数据可能需要同时插入不同的表,但列不同,这时需要设置insert/update的列
可以按以下规则设置,insert与update规则一样
如果有ConfigStore也可以通过ConfigStore.columns(String ... columns)或columns(List<String> colums)设置
-表示忽略 +表示必选
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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" ); |
需要区别的是 如果在指定的列中没有出现+-则只处理指定的这几列,其他所有未指定的列忽略,反之如果出现了+或-则其他未指定的列按默认规则处理
1 2 3 4 5 6 7 8 | 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是否更新空值的属性 |