Android GreenDao框架使用 增删改查篇

参考

官方文档

Github

上一篇

Android GreenDao框架使用 基础篇

这一篇是紧接着上一篇写的,上一篇讲述了准备工作,创建实体类,初始化三个部分。这一篇主要写增删改查。

因为我会接着上一篇的代码写,所以最好先看上一篇。

DaoSession daoSession = GreenDaoManager.getInstance().getDaoSession();
TestUserDao testUserDao = daoSession.getTestUserDao();

通过get方法我们可以获取某个具体的实体类进行操作。

单条增加

TestUser testUser = new TestUser(null, name.getText().toString(), Integer.parseInt(age.getText().toString()), sex.getText().toString(), IpUtil.getUUID());
long insert = testUserDao.insert(testUser);

  TestUser testUser = new TestUser();
  testUser.setName( name.getText().toString());
  testUser.setAge(Integer.parseInt(age.getText().toString()));
  testUser.setSex(sex.getText().toString());
  testUser.setUid(IpUtil.getUUID());
  long insert = testUserDao.insert(testUser);

返回的insert 就是主键。

这里有个生成随机id的方法:

随机生成id字符串

多条增加

 List<TestUser> list = new ArrayList<>();
 TestUser testUser = new TestUser();
 ...
 list.add(testUser);
 testUserDao.insertInTx(list);

去重添加

插入数据,传入的对象主键如果存在于数据库中,有则更新,否则插入。

//单条
long insert = testUserDao.insertOrReplace(testUser);
//多条
testUserDao.insertOrReplaceInTx(list);

单条删除:根据对象删除

 //根据对象来删
 TestUser testUser = new TestUser(number, name.getText().toString(), Integer.parseInt(age.getText().toString()), sex.getText().toString(), IpUtil.getUUID());
 testUserDao.delete(testUser);

 //根据对象来删
 TestUser testUser = new TestUser();
 testUser.setId(number);
 testUser.setName(name.getText().toString());
 testUser.setAge(Integer.parseInt(age.getText().toString()));
 testUser.setSex(sex.getText().toString());
 testUser.setUid(IpUtil.getUUID());
 testUserDao.delete(testUser);

这个方法主键一定要填对,不能直接赋值为null,因为就是根据主键来删,写null运行会报错,其他的参数写默认值或null都可以。

单条删除:根据ID删除

testUserDao.deleteByKey(number);

多条删除:根据对象集合删除

 List<TestUser> list = new ArrayList<>();
 TestUser testUser = new TestUser();
 ...
 list.add(testUser);
 testUserDao.deleteInTx(list);

我们也可以先查出集合再进行删除。

多条删除:根据ID集合删除

List<Long> list = new ArrayList<>();
...
testUserDao.deleteByKeyInTx(list);

多条删除:删除所有数据

 testUserDao.deleteAll();

单条更改

 //根据对象来删
 TestUser testUser = new TestUser(number, name.getText().toString(), Integer.parseInt(age.getText().toString()), sex.getText().toString(), IpUtil.getUUID());
 testUserDao.update(testUser);

 //根据对象来删
 TestUser testUser = new TestUser();
 testUser.setId(number);
 testUser.setName(name.getText().toString());
 testUser.setAge(Integer.parseInt(age.getText().toString()));
 testUser.setSex(sex.getText().toString());
 testUser.setUid(IpUtil.getUUID());
 testUserDao.update(testUser);

与删除同理,主键不能为空或null。

多条更改

 List<TestUser> list = new ArrayList<>();
 TestUser testUser = new TestUser();
 ...
 list.add(testUser);
 testUserDao.updateInTx(list);

查询所有数据

 List<TestUser> testUsers =testUserDao.loadAll();

根据ID查询

TestUser testUser= testUserDao.load(number);

写到这基础用法已经可以了。之后我会更新queryBuilder的用法,用queryBuilder进行条件查询。

猜你喜欢

转载自blog.csdn.net/m0_48440239/article/details/114288904