GreenDao配置步驟
Project下的build.gradle文件加入
buildscript {
? ? repositories {
? ? ? ? google()
? ? ? ? jcenter()
? ? ? ? mavenCentral() // 添加代碼倉(cāng)庫(kù)? 步驟1
? ? }
? ? dependencies {
? ? ? ? classpath "com.android.tools.build:gradle:4.0.1"
//步驟2
? ? ? ? classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' //本地Greendao數(shù)據(jù)庫(kù)
? ? ? ? // NOTE: Do not place your application dependencies here; they belong
? ? ? ? // in the individual module build.gradle files
? ? }
}
//greendao配置 步驟5 在buildTypes下面添加
? ? greendao {
? ? ? ? //數(shù)據(jù)庫(kù)版本號(hào)占业,升級(jí)時(shí)修改
? ? ? ? schemaVersion 1
? ? ? ? //生成的DAO胜蛉,DaoMaster和DaoSession的包路徑。默認(rèn)與表實(shí)體所在的包路徑相同
? ? ? ? daoPackage 'com.example.xts.greendaodemo.db'
? ? ? ? //生成源文件的路徑。默認(rèn)源文件目錄是在build目錄中的(build/generated/source/greendao)
? ? ? ? targetGenDir 'src/main/java'
? ? }
Module下的build.gradle文件加入
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin 步驟3
android {
........
//greendao配置? 步驟5
? ? greendao {
? ? ? ? //數(shù)據(jù)庫(kù)版本號(hào)宜咒,升級(jí)時(shí)修改
? ? ? ? schemaVersion 1
? ? ? ? //生成的DAO,DaoMaster和DaoSession的包路徑。把com.example.xts.greendaodemo修改為與表實(shí)體所在的包路徑相同(自己的項(xiàng)目主包路徑)
? ? ? ? daoPackage 'com.mypro.db'
? ? ? ? //生成源文件的路徑。默認(rèn)源文件目錄是在build目錄中的(build/generated/source/greendao)
? ? ? ? targetGenDir 'src/main/java'
? ? }
}
dependencies {
? ? implementation fileTree(dir: 'libs', include: ['*.jar'])
? ? implementation 'androidx.appcompat:appcompat:1.1.0'
? ? implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
? ? testImplementation 'junit:junit:4.12'
? ? androidTestImplementation 'androidx.test.ext:junit:1.1.1'
? ? androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//greenDAO配置? 步驟4
? ? implementation 'org.greenrobot:greendao:3.2.2' // add library
? ? implementation 'org.greenrobot:greendao-generator:3.2.2'
}
//第六步地啰,
//建bean類 實(shí)體類和數(shù)據(jù)庫(kù)對(duì)應(yīng),讲逛,添加相關(guān)注解亏吝,,然后編譯項(xiàng)目生成相關(guān)文件? 錘項(xiàng)目
@Entity
public class ColltionDbBean{
? ? @Id(autoincrement = true)
? ? private long id;
? ? private String title;
? ? ? private String urlPath;
}
//第七步盏混,
//創(chuàng)建一個(gè)自己的application類蔚鸥,在application中完成DaoSession的初始化惜论,避免以后重復(fù)初始化,便于使用? 止喷,馆类,,要配置到清單中
public class BaseApp extends Application {
? ? private static BaseApp sInstance;
? ? private DaoMaster.DevOpenHelper mHelper;
? ? private DaoMaster mDaoMaster;
? ? private DaoSession mDaoSession;
? ? @Override
? ? public void onCreate() {
? ? ? ? super.onCreate();
? ? ? ? sInstance = this;
? ? ? ? setDatabase();
? ? }
? ? ? ? /**
? ? ? ? * 設(shè)置greenDao
? ? ? ? */
? ? private void setDatabase() {
? ? ? ? //通過(guò)DaoMaster內(nèi)部類DevOpenHelper可以獲取一個(gè)SQLiteOpenHelper 對(duì)象
? ? ? ? // 可能你已經(jīng)注意到了弹谁,你并不需要去編寫(xiě)「CREATE TABLE」這樣的 SQL 語(yǔ)句蹦掐,因?yàn)?greenDAO 已經(jīng)幫你做了。
? ? ? ? // 注意:默認(rèn)的 DaoMaster.DevOpenHelper 會(huì)在數(shù)據(jù)庫(kù)升級(jí)時(shí)僵闯,刪除所有的表,意味著這將導(dǎo)致數(shù)據(jù)的丟失藤滥。
? ? ? ? // 所以鳖粟,在正式的項(xiàng)目中,你還應(yīng)該做一層封裝拙绊,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全升級(jí)向图。
? ? ? ? // 此處MyDb表示數(shù)據(jù)庫(kù)名稱 可以任意填寫(xiě)
? ? ? ? mHelper = new DaoMaster.DevOpenHelper(this, "MyDb", null);? ? // MyDb是數(shù)據(jù)庫(kù)的名字,更具自己的情況修改
? ? ? ? SQLiteDatabase db = mHelper.getWritableDatabase();
? ? ? ? mDaoMaster = new DaoMaster(db);
? ? ? ? mDaoSession = mDaoMaster.newSession();
? ? }
? ? public static BaseApp getInstance(){
? ? ? ? return sInstance;
? ? }
? ? public DaoSession getDaoSession(){
? ? ? ? return mDaoSession;
? ? }
}
使用方法
數(shù)據(jù)庫(kù)的操作包括增刪改改查标沪,方法如下:
package com.jackie.greendao;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.List;publicclass MainActivity extends AppCompatActivity implements View.OnClickListener {
? ? private EditText mName, mAge;
? ? private Button mAdd;
? ? private ListView mListView;
? ? private DaoMaster.DevOpenHelper mDevOpenHelper;
? ? private DaoMaster mDaoMaster;
? ? private DaoSession mDaoSession;
? ? private PersonDao mPersonDao;
? ? @Override
? ? protectedvoid onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? initView();
? ? ? ? initEvent();
? ? ? ? openDb();
? ? }
? ? privatevoid initView() {
? ? ? ? mName = (EditText) findViewById(R.id.name);
? ? ? ? mAge = (EditText) findViewById(R.id.age);
? ? ? ? mAdd = (Button) findViewById(R.id.add);
? ? ? ? mListView = (ListView) findViewById(R.id.list_view);
? ? }
? ? privatevoid initEvent() {
? ? ? ? mAdd.setOnClickListener(this);
? ? }
? ? privatevoid openDb() {
? ? ? ? mDevOpenHelper =newDaoMaster.DevOpenHelper(this,"person.db",null);
? ? ? ? mDaoMaster =new DaoMaster(mDevOpenHelper.getWritableDb());
? ? ? ? mDaoSession = mDaoMaster.newSession();
? ? ? ? mPersonDao = mDaoSession.getPersonDao();
? ? }
? ? //插入publicvoid insert() {
? ? ? ? Person person =newPerson(Long.valueOf(1), mName.getText().toString(),
? ? ? ? ? ? ? ? Integer.parseInt(mAge.getText().toString()));
? ? ? ? mPersonDao.insert(person);
? ? ? ? mName.setText("");
? ? ? ? mAge.setText("");
? ? }
? ? publicvoid delete(Person person) {
? ? ? ? mPersonDao.delete(person);
? ? }
? ? //更新publicvoid update(Person person) {
? ? ? ? mPersonDao.insertOrReplace(person);
? ? }
? ? //查詢publicvoid query() {
? ? ? ? List persons = mPersonDao.queryBuilder().list();
? ? }
? ? @Override
? ? publicvoid onClick(View view) {
? ? ? ? switch (view.getId()) {
? ? ? ? ? ? case R.id.add:
? ? ? ? ? ? ? ? insert();
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
}