android greenDao的使用
阿新 • • 發佈:2018-12-14
今天居然看到有人給我點贊,其實還是蠻開心的。以後寫部落格儘量寫的詳細點。再接再厲
android資料庫的操作,除了SQLiteOpenHelper工具以外,還提供了GreenDao來實現,底層也是使用SQLiteOpenHelper來實現的
1.github地址 https://github.com/greenrobot/greenDAO
2.依賴參照github
buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:3.1.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin } } // In your app projects build.gradle file: apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // apply plugin dependencies { implementation 'org.greenrobot:greendao:3.2.2' // add library }
3.構建資料庫實體
@Entity public class PersonRes { @Id(autoincrement = true)//主鍵自增長 private Long id; @NotNull//不能為空 private String name; @NotNull private int age; } 4.在gradle檔案中配置生成資料庫工具檔案的路徑 schemaVersion 1 daoPackage 'com.dejun.commonsdk.gen'//此處要寫成你的專案包名.gen(新建目錄名稱) targetGenDir 'src/main/java' 5.點選Build裡的Make Project會自動在com.dejun.commonsdk下生成gen目錄,在gen目錄下有DaoMaster和DaoSession兩個檔案 6.使用
public class GreenDaoUtil { private DaoManager daoManager; public GreenDaoUtil(Context context) { daoManager = DaoManager.getInstance(); daoManager.init(context); } /** * 插入資料,如果表未建立,先建立表 */ public boolean insert(PersonRes personRes){ boolean flag=false; flag=daoManager.getDaoSession().getPersonResDao().insert(personRes)==-1?false:true; Logger.d("insert:"+personRes); return flag; } /** * 插入多條資料 */ public void insertList(final List<PersonRes> personResList){ daoManager.getDaoSession().runInTx(new Runnable() { @Override public void run() { for (PersonRes personRes:personResList ){ daoManager.getDaoSession().insertOrReplace(personRes); } } }); } /** * 修改一條資料 */ public boolean update(PersonRes personRes){ boolean flag=false; try { daoManager.getDaoSession().update(personRes); flag=true; } catch (Exception e) { e.printStackTrace(); } return flag; } /** * 刪除單條資料 */ public boolean delete(PersonRes personRes){ boolean flag=false; try { daoManager.getDaoSession().delete(personRes); flag=true; } catch (Exception e) { e.printStackTrace(); } return flag; } /** * 刪除所有資料 */ public boolean deleteAll(){ boolean flag=false; try { daoManager.getDaoSession().deleteAll(PersonRes.class); flag=true; } catch (Exception e) { e.printStackTrace(); } return flag; } /** * 查詢所有記錄 */ public List<PersonRes> queryAll(){ return daoManager.getDaoSession().loadAll(PersonRes.class); } }