關于android數據庫框架,有很多種,各有各的優勢。 先來看一個圖
,但對于批量查詢操作,性能最優的莫過于greendao了。今天來說說關于它簡單的使用方式。 在3.0以前,還需要用一個java項目來生成session和dao類。但是從3.0開始,則使用編譯時注解,在編譯時就生成了,方便了很多。 1. 配置gradle dependencies { // This is only needed if you want to use encrypted databases // compile 'net.zetetic:android-database-sqlc 2. 創建映射的model,也就是數據表映射類,對象里面的數據則為表字段
這樣則能夠生成一張Config表,字段有id,telephone,age。 3. 使用 1) application(APP)中,加入全局session初始化。
/** * 是否加密數據庫. */ public static final boolean ENCRYPTED = false; private static DaoSession daoSession; private final String DB_ENCRYPIED_NAME = "encrypied_db"; private final String DB_NAME = "normal_db"; @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate();//初始化session DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, ENCRYPTED ? DB_ENCRYPIED_NAME : DB_NAME);// Database db = ENCRYPTED ? helper.getEncryptedWritableDb(getResources().getString(R.string.db_psw)) : helper.getWritableDb();//如果使用了加密,則需要用密碼打開 Database db = helper.getWritableDb(); daoSession = new DaoMaster(db).newSession();//獲取到daoSession,用于后續操作 } /** * 請求DaoSession * * @return */ public static DaoSession getDaoSession() { return daoSession; }2)
插入insertConfigDao configDao = APP.getDaoSession().getConfigDao();Config config=new Config(null, 1111111111, 11);configDao.insert(config);//加入刪除deleteAPP.getDaoSession().getConfigDao().deleteAll();//這樣子刪除全部條目,也可以刪除單個。delete(T entity)。查 query//查的方式就很多了,這是查全部,放進listConfigDao configDao = APP.getDaoSession().getConfigDao(); List<Config> configs = configDao.queryBuilder().build().forCurrentThread().list();//線程安全 if (configs != null && configs.size() != 0) { return configs.get(0);//取第一個 }//按條件查找//eqdao.queryBuilder().where(Dao.propertys.字段.eq("為什么").unique();//unique得到唯一對象//likedao.queryBuilder().where(Dao.propertys.字段.like("值%").list();//like來用于通配符查找,返回集合//betweendao.queryBuilder().where(Dao.propertys.字段.between(20,30).list();//該字段下,在20到30之間的集合//gt==》大于dao.queryBuilder().where(Dao.propertys.字段.gt(20).list();//該字段下,在20之后的集合//lt==》小于dao.queryBuilder().where(Dao.propertys.字段.lt(20).list();//該字段下,在20之下的集合//notEq==》不等于dao.queryBuilder().where(Dao.propertys.字段.notEq(20).list();//該字段下,不等于20的集合//ge==》大于等于dao.queryBuilder().where(Dao.propertys.字段.ge(20).list();//該字段下,大于等于20的集合//orderAscdao.queryBuilder().where(Dao.propertys.字段.eq("為什么").orderAsc(Dao.Properties.字段).list();//該字段等值后再升序排序改 update//獲取到dao操作類ConfigDao configDao = APP.getDaoSession().getConfigDao();//查找到要更改的對象Config config=configDao.queryBuilder().build().forCurrentThread().list().get(0);config.setAge(00);//重新設置值configDao.update(config);//更改數據庫具體查看官方api,因為查詢用的最多,所以這里查詢講得多一點。
解決辦法只需要在混淆文件中加入下面代碼即可:
#greendao3.2.0,此是針對3.2.0,如果是之前的,可能需要更換下包名-keep class org.greenrobot.greendao.**{*;}-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {public static java.lang.String TABLENAME;}-keep class **$Properties新聞熱點
疑難解答