GreenDao封装使用

    xiaoxiao2021-12-14  66

    case R.id.add: //添加数据 Person item=new Person(null,"wang","18"); PersonHelper.getInstance(this).addInfo(item); break; case R.id.delete://删除id是1的数据 PersonHelper.getInstance(this).deleteInfo(1); break; case R.id.delete_table:// 删除这个表 PersonHelper.getInstance(this).clearInfo(); break; case R.id.update: //修改 id为1的数据 //id需要强转为long Person item2=new Person((long)1,"up","10"); PersonHelper.getInstance(this).updateInfo(item2); break; case R.id.query: //查询id为1的name字段的值 String name=PersonHelper.getInstance(this).getTypeValue(1); text.setText(name); break; case R.id.query_list: //查询所有数据 List<Person> list = PersonHelper.getInstance(this).getInfoList2(); Person person = new Person(); StringBuilder str = new StringBuilder();//和String 它这个必须new对象。不然就是空指针。 for(int i=0;i<list.size();i++){ person=list.get(i); String names=person.getName(); String ages=person.getAge(); Long id=person.getId(); str.append(names+id+""); System.out.println("---查询---->"+names + id+""); } if(TextUtils.isEmpty(str)){ text.setText("没有数据"); }else{ text.setText(str); } break; case R.id.query_have: //查询有没有id为1的数据 boolean flag=PersonHelper.getInstance(this).isHave(1); if(flag==true){ text.setText("true"); }else{ text.setText("false"); } break; } import android.content.Context; import com.example.greendaos_dao.DaoMaster; import com.example.greendaos_dao.DaoMaster.OpenHelper; import com.example.greendaos_dao.DaoSession; public class DbHelper { private static DaoMaster daoMaster; private static DaoSession daoSession; public DbHelper() { } /** * 取得DaoMaster * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (daoMaster == null) { OpenHelper helper = new DaoMaster.DevOpenHelper(context, "my_db", null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 取得DaoSession * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { daoMaster = getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; } } import java.util.List; import java.util.Map; import com.example.greendaos_dao.DaoSession; import com.example.greendaos_dao.Person; import com.example.greendaos_dao.PersonDao; import com.example.greendaos_dao.PersonDao.Properties; import de.greenrobot.dao.query.DeleteQuery; import de.greenrobot.dao.query.QueryBuilder; import android.content.Context; //10个方法 public class PersonHelper { private static Context mContext; private static PersonHelper instance; private PersonDao personDao; //先去掉import包 然后改 PersonDao personDao Person; ctrl+f全修改 public PersonHelper() { // TODO Auto-generated constructor stub } public static PersonHelper getInstance(Context context) { if (instance == null) { instance = new PersonHelper(); if (mContext == null) { mContext = context; } // 数据库对象 DaoSession daoSession = DbHelper.getDaoSession(mContext); instance.personDao = daoSession.getPersonDao(); } return instance; } /** 添加数据 */ public void addInfo(Person item) { personDao.insert(item); } /** 删除 一条数据,根据id删除 */ public void deleteInfo(int Id){ personDao.deleteByKey((long) Id); //删除一条note:非常简单明,在onListItemClick方法中可以看到 } /** 删除 可修改变成删除一组数据 */ public void deleteInfoList(int id) { QueryBuilder<Person> qb = personDao.queryBuilder(); //删除的条件 DeleteQuery<Person> bd = qb.where(Properties.Id.eq(id)).buildDelete(); bd.executeDeleteWithoutDetachingEntities(); } /** 删除表内所有数据*/ public void clearInfo() { personDao.deleteAll(); } /** 修改*/ //item中有id,根据id进行修改。下面两中方法都可以用。 public void updateInfo(Person item){ personDao.insertOrReplace(item); //personDao.update(note2); } /** 多条数据查询 */ public List<Person> getInfoList1() { QueryBuilder<Person> qb = personDao.queryBuilder(); return qb.list(); } /** 查询 获取整个表的数据集合,一句代码就搞定!*/ public List<Person> getInfoList2() { return personDao.loadAll(); } /** 查询某个Id是否存在 */ public boolean isHave(int Id) { QueryBuilder<Person> qb = personDao.queryBuilder(); qb.where(Properties.Id.eq(Id)); qb.buildCount().count(); return qb.buildCount().count() > 0 ? true : false;// 查找收藏表 } /**单条查询 通过id查找其类型字段值 */ public String getTypeValue(int id) { QueryBuilder<Person> qb = personDao.queryBuilder(); qb.where(Properties.Id.eq(id)); //通过id字段查询,具体使用可修改别的字段 if (qb.list().size() > 0) { return qb.list().get(0).getName(); //根据id获取它的name字段的值。具体用,具体修改 } else { return "0"; } } /** 多条件重查询 */ public List<Person> getTJList(int id) { QueryBuilder<Person> qb = personDao.queryBuilder(); //这是查询条件 qb.where(qb.and(Properties.Id.eq(id), Properties.Age.eq(20))); //eq等于。gt大于。ge大于等于 qb.orderAsc(Properties.Id);// 排序依据 ASC表示升序排序,DESC表示降序排序 return qb.list(); } //名字叫“乔”和出生年份(大于1970或(出生年份是1970年,出生月等于或大于10(10月)。 // QueryBuilder qb = userDao.queryBuilder(); // qb.where(Properties.FirstName.eq("Joe"), // qb.or(Properties.YearOfBirth.gt(1970), // qb.and(Properties.YearOfBirth.eq(1970), Properties.MonthOfBirth.ge(10)))); // List youngJoes = qb.list(); // 比如:查找所有以“Joe”为first name 的用户,并以last name排序: // List joes = userDao.queryBuilder() // .where(Properties.FirstName.eq("Joe")) // .orderAsc(Properties.LastName) // .list(); }
    转载请注明原文地址: https://ju.6miu.com/read-970168.html

    最新回复(0)