关于override

最后更新:2024-03-19 10:42:53 | 状态:未完成
override是实现检测需要插入的数据在数据库中是否存在,来确定覆盖还是跳过
ConfigStore与DataRow/DataSet都提供了override属性
大部分情况下需要用ConfigStore配合insert方法来实现
如果数据库中存在相同数据(根据columns,如果不指定则根据主键或唯一索引) 是否覆盖 true或false会检测数据库null不检测
ConfigStore configs = new DefaultConfigStore();
configs.override(true,"ID")//true表示遇到相同数据覆盖,
configs.override(false)//false表示遇到相同数据跳过
如果不设置则不判断,直接插入
service.insert("table", set, configs)

对于不同的数据库生成的SQL会不一样,参考【不同数据库生成的SQL】,
需要注意的不同的数据库有不同的要求,比如mysql要求有唯一索引。

如果不能满足数据库要求,还想实现类似功能的情况下可以用DataSet/DataRow.override(true)配合service.save()方法实现
需要注意的是save方法会根据主键逐行检测数已设置过override属性的的DataRow在据库中是否存在,判断完成后分两组一组insert一组update
当然这个主键与数据库结构无关,默认ID,也可以通过配置文件可DataRow.setPrimaryKey来实现主键或复合主键,这里的主键只是用来作为查询条件的依据,与数据库无关
最近更新 搜索 提交