## 6.2.6 save单个对象保存

例如:

## 6.2.7 saveAll批量对象保存
* 接口提供如下三个。

* 应用范例:ReflectPropertyHandler 是一个针对saveAll的集合数据的反调,通过反调给集合属性赋值。

## 6.2.8 saveAllNotExist保存并忽视已经存在的数据

链式操作:save().saveMode(IGNORE).many(staffInfos);
## 6.2.9 update单对象修改操作

* 使用说明
update操作默认不会对属性值为null对应的字段值修改,场景:一个审核流程,不同的角色只维护特定的字段值,如果全部字段进行update就必然需要先加载对象值然后再update,在高并发环境下,可能会将其他用户刚维护的数据覆盖成之前的数据。如果要对某个字段进行强制修改,通过forceUpdateProps数组提供(对应VO对象的属性名称,无关大小写)。
注:update操作相对于hibernate先load后update节约了一次查询,效率提升1倍多。
## 6.2.10 updateDeeply深度和updateCascade级联对象修改

* 使用说明:
updateCascade操作一般针对主子表形式,在主对象中包含子表集合的数据,当进行修改操作时,会同时修改主表和子表。forceCascadeClasses一般当子集合数据为空时会执行子集合对应的表的清空和修改操作。
请参看quickvo.xml有关cascade的配置,delete表示对主表关联的子表的存量数据直接删除,也可以写成一个sql片段,如enabled=0 表示对修改关联的子表存量数据置为无效(请跟进实际表字段书写)

**源码解读,参见**:
org.sagacity.sqltoy.dialect.utils.DialectUtils类,方法:

片段:

## 6.2.11 updateAll批量修改操作

注:批量更新不涉及级联更新,只针对当前VO对象的表进行修改。
## 6.2.12 updateAllDeeply批量深度修改

注:参数ReflectPropertyHandler一般设置为null,仅仅在极为特殊情况下使用。
## 6.2.13 updateByQuery基于单表查询完成数据修改
* 方法定义,在SqlToyLazyDao中提供

* 使用范例

## 6.2.14 saveOrUpdate保存或修改操作

* 使用说明:sqltoy的saveOrUpdate底层充分利用数据库的特性只做一次性数据库交互完成操作,如oracle、sqlserver、db2等数据库使用merge into 语法,而mysql则使用
insert into xxxx ON DUPLICATE KEY UPDATE
postgresql9.4和9.5+版本类似功能存在很大差异,sqltoy在底层分别进行了实现,建议使用postgresql9.6+版本。
## 6.2.15 saveOrUpdateAll批量保存和修改操作

## 6.2.18 updateFetch修改并将修改的记录返回
* 场景用于:需要对数据进行一些逻辑判断再做相应的动作,一次性数据库交互完成多个步骤:
1、 查询记录并增加锁
2、 通过反调对数据进行逻辑处理
3、 最终返回处理后的结果
* 优点:不同于其他框架要2次数据库交互,1、先锁记录查询,获取结果后对记录进行处理,2、调用更新操作

注意注意:
1、 **updateFetch 是针对查询语句,且查询语句中必须要明确字段,不能写成select \* from,** updateFetch是拿来更改的意思!
2、 **updateFetch 的查询语句无需自己写for update这类语句,框架会自动补充**
用法:

注:updateFetch目的是用于记录同步操作,先获取到数据然后完成修改操作,避免其他资源形成竞争。一般用于多用户高并发情况下随机抢占。

## 6.2.19updateSaveFetch 锁查询修改(不存在则保存)并返回修改后结果
主要用于高并发强事务场景,比如库存台账的实时扣减、客户资金账余额的实时扣减


## 6.2.23 batchUpdate批量更新操作
提供传统sql批量执行机制(一般都可以通过saveOrUpdateAll等POJO实现)
**调用范例**
* 对象传参模式

* **数组传参模式**

- 1.简介
- 开发历程
- 技术架构
- 问答了解
- 版本历史
- update-5.1.4、4.18.43
- update-5.1.2
- 早期历史
- 5.1.15.rc1
- 2.快速使用
- 示例与环境
- quickvo工具使用
- 用法说明
- 关键注意事项
- 严格VO(DTO)和POJO(entity)分层
- 3.教程
- spring项目搭建
- Toy-ORM 配置
- 详细配置参数
- 缓存功能
- 缓存配置、缓存扩展
- 扩展缓存框架配置
- 缓存翻译
- 其他缓存应用场景
- 公共功能
- 表(对象)关联
- 公共字段赋值
- 链式操作
- DTO与POJO互转
- 对象操作
- save + update
- delete + trunk
- load加载数据
- 唯一验证
- 树形数据
- sharding分库分表
- SQL操作
- sql文件规则
- filters说明
- 缓存翻译
- 分库分表
- 汇总、环比
- 行列转换
- 数据脱敏
- 格式化-数字日期
- sqlToy的sql查询基本规则
- Sql查询功能
- load操作
- get操作
- find操作
- 分页查询
- 并行查询
- execute操作
- executeSql
- executeStore
- 数据库特性
- 主键策略
- JSON等类型扩展支持
- 跨库说明--异种库兼容
- 数据库保留字处理
- 多源-多库-异库
- 多数据源
- Mongodb支持
- ElasticSearch支持
- 高级扩展
- 补充-if+fast+blank+value+loop
- 高级功能
- 完美sql
- 快速分页
- 缓存翻译
- 防止sql注入
- 字段加解密
- 扩展集成
