更新数据(Update)¶
更新日期 2021-6-26
- 2021-6-26 创建文档
更新数据库中的已有数据。使用的注解是@Update
。
实体类User,PrimaryKey
只有一个uid
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
public long uid;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
@ColumnInfo
public long createTime;
}
在Dao中给方法加上注解。
@Dao
public interface UserDao {
@Update
void updateOneUser(User user);
@Update
int updateOneUserAndResult(User user);
}
如果返回int,表示执行更新成功的数量。
如果要更新多条数据,可以传入多个对象
@Update(onConflict = OnConflictStrategy.ABORT)
int updateUsersCanAbort(User... user);
@Update(onConflict = OnConflictStrategy.IGNORE)
int updateUsersCanIgnore(User... user);
@Update(onConflict = OnConflictStrategy.REPLACE)
int updateUsersCanReplace(User... user);
onConflict
有3个参数,默认是ABORT
。这些参数与添加数据的参数一样。
返回值int表示执行更新操作成功的行数(对象数)。
假设要更新4个User对象,但实际上只更新了3个,则@Update
的方法返回3
@NotNull
private User[] getUsers() {
User[] users = new User[4];
for (int i = 1; i < 4; i++) {
final int uid = i + 1;
User user = new User("Rust", "Fisher-" + uid);
user.uid = uid;
user.createTime = 54898 + i; // 假的时间
users[i] = user;
}
User fakeUser = new User("fake", "user");
fakeUser.uid = 100;
users[0] = fakeUser; // 一个假的数据
return users;
}
// 尝试更新数据
User[] users = getUsers();
UserDao userDao = DbMgr.getMgr().getDatabase().userDao();
int res = userDao.updateUsersCanReplace(users);
Log.d(TAG, "updateManyCanReplace: " + res);
注意:这里的User类PrimaryKey
只有一个uid
。
根据uid来判断这一条数据是否要被更新。
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~