GreenDao的save要注意的地方

save
public void save(T entity)
"Saves" an entity to the database: depending on the existence of the key property, it will be inserted (key is null) or updated (key is not null).

This is similar to insertOrReplace(Object), but may be more efficient, because if a key is present, it does not have to query if that key already exists.


在官方的文档中,save是这样写的,从中可以看出,如果主键不是null的话会启动update,但要注意的是,有可能这个对象是从服务器获取回来的,这时候如果用save,但数据库里面并没有这条数据就麻烦了,要用insert,不要依赖于save。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Save()函数是Django模型类中的一个方法,用于将对象保存到数据库中。在使用Save()函数时,需要注意以下几点: 1. 对象必须是一个有效的模型实例:在调用Save()函数之前,需要确保对象是一个有效的模型实例,即它是从模型类中实例化的,并且已经设置了正确的属性值。 2. 对象的属性值被保存到数据库中:Save()函数将对象的属性值保存到数据库中。如果对象是一个新的实例,Save()函数将其插入到数据库中作为一条新的记录。如果对象已经存在于数据库中,Save()函数更新数据库中对应的记录。 3. Save()函数自动验证数据:在保存对象之前,Save()函数自动调用模型类的验证方法,确保对象的属性值符合模型类定义的字段约束和验证规则。如果验证失败,Save()函数抛出一个ValidationError异常。 4. Save()函数自动更新时间戳字段:如果模型类定义了自动更新时间戳字段(例如created_at和updated_at字段),Save()函数在保存对象时自动更新这些字段的值。 5. Save()函数是原子操作:Save()函数是一个原子操作,即要么完全成功保存对象到数据库中,要么完全失败不保存任何数据。如果在保存过程中发生错误,Save()函数抛出一个DatabaseError异常,并且不对数据库做任何修改。 6. Save()函数可以接受可选参数:Save()函数可以接受一些可选参数,用于控制保存行为。例如,可以使用force_insert参数强制将对象插入到数据库中,即使它已经存在于数据库中。 7. Save()函数触发pre_save和post_save信号:在保存对象之前和之后,Save()函数触发pre_save和post_save信号,可以通过连接信号的方式在这两个时间点执行一些额外的操作。 8. Save()函数的返回值:Save()函数返回一个布尔值,表示保存操作是否成功。如果保存成功,返回True;如果保存失败,返回False。 9. Save()函数的性能考虑:由于Save()函数对数据库进行写操作,因此在性能敏感的场景中,应该尽量减少Save()函数的调用次数,可以使用批量操作或者延迟保存等技术来提高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值