相关知识
insert 插入一条数据
insertInTx 批量插入数据
insertOrReplace 插入数据,传入的对象主键如果存在于数据库中,有则更新,否则插入
insertOrReplaceInTx 批量插入数据 同上
save 插入数据,判断对象是否有Key值,有则更新,否则插入
insert
//插入操作
private void insert() {
studentDao.insert(getStudent());
}
insert基本的插入操作,没有必要讲太多
insertInTx
//批量插入
private void insertInTx() {
List<Student> list = new ArrayList<>();
list.add(new Student(1, "小明", 18, "男"));
list.add(new Student(2, "小花", 16, "女"));
list.add(new Student(3, "小白", 15, "男"));
studentDao.insertInTx(list);
}
insertOrReplace
//插入或替换
private void insertOrReplace() {
studentDao.insertOrReplace(getStudent());
}
使用上面的批量插入数据演示
主键存在于数据库,则更新数据,否则插入数据
insertOrReplaceInTx
//批量插入或替换
private void insertOrReplaceInTx() {
List<Student> list = new ArrayList<>();
list.add(new Student(1, "one", 18, "man"));
list.add(new Student(2, "two", 16, "woman"));
list.add(new Student(3, "three", 15, "man"));
studentDao.insertOrReplaceInTx(list);
}
使用上面批量插入的数据演示
Save
private void save() {
studentDao.save(new Student(null, "小明", 22, "男"));
}
private void save() {
studentDao.save(new Student(1L, "小明", 22, "男"));
}
save插入数据前,判断对象Key值,如果对象有Key值则更新(upDate)数据,对象没有Key值则插入(insert)数据;Key值就是你设置的Long类型的id。
注意:如果数据库没有插入任何数据,而对象有Key值则调用的是更新,从而无法插入数据
适用场景
- 只有本地数据库,且Key默认由数据库生成,直接使用save好
- 插入的数据有Key,这种情况通常是同步线上数据到本地数据库,因为直接使用了线上数据库的Key,所以不能用save,必须使用insertOrReplace。
在确保插入的数据的Key存在于数据库中,使用save高效,一律情况下使用insertOrReplace