GreenDao集成使用

作者: a9eb75a07212 | 来源:发表于2018-08-18 11:17 被阅读10次

    1、在项目中引入greendao,配置如下

    dependencies {

        implementation fileTree(dir: 'libs', include: ['*.jar'])

        implementation 'com.android.support:appcompat-v7:27.1.1'

        implementation 'com.android.support.constraint:constraint-layout:1.1.2'

        testImplementation 'junit:junit:4.12'

        androidTestImplementation 'com.android.support.test:runner:1.0.2'

        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

        implementation 'com.android.support:design:27.1.1'

        implementation 'org.greenrobot:greendao:3.2.2' // add library

        implementation 'org.greenrobot:greendao-generator:3.2.2'

    }

    2、在model级别的gradle中配置greendao,需要配置两个地方,配置如下

    apply plugin: 'org.greenrobot.greendao'

    android {

      .....

    }

    buildscript {

        repositories {

            mavenCentral()

        }

        dependencies {

            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

        }

    }

    3、在model级别下的gradle中配置greendao的版本等信息,配置如下

    greendao {

        //版本(每次修改数据库需要升级,每次修改都需要将版本号进行升级)

        schemaVersion 4

        // 生成文件包名(一般为app包名+生成文件的文件夹名)

        daoPackage 'mycode.com.mycode.greendao.gen'

        //生成文件路径

        targetGenDir 'src/main/java'

    }

    buildscript {

        ...

    }

    4、新建实体UserInfo,make项目即可生成对应文件

    @Entity

    public class UserInfo implements Parcelable {

        @Id

        private Long id;

        private String name;

        @Generated(hash = 574809764)

        public UserInfo(Long id, String name) {

            this.id = id;

            this.name = name;

        }

        @Generated(hash = 1279772520)

        public UserInfo() {

        }

        protected UserInfo(Parcel in) {

            if (in.readByte() == 0) {

                id = null;

            } else {

                id = in.readLong();

            }

            name = in.readString();

        }

        public static final Creator CREATOR = new Creator() {

            @Override

            public UserInfo createFromParcel(Parcel in) {

                return new UserInfo(in);

            }

            @Override

            public UserInfo[] newArray(int size) {

                return new UserInfo[size];

            }

        };

        public Long getId() {

            return this.id;

        }

        public void setId(Long id) {

            this.id = id;

        }

        public String getName() {

            return this.name;

        }

        public void setName(String name) {

            this.name = name;

        }

        @Override

        public int describeContents() {

            return 0;

        }

        @Override

        public void writeToParcel(Parcel parcel, int i) {

            if (id == null) {

                parcel.writeByte((byte) 0);

            } else {

                parcel.writeByte((byte) 1);

                parcel.writeLong(id);

            }

            parcel.writeString(name);

        }

    }

    5、在项目的Application中创建有关数据库的操作类,配置如下

    public class MyApplication extends Application{

        private DaoMaster.DevOpenHelper mHelper;

        private SQLiteDatabase db;

        private DaoMaster mDaoMaster;

        private DaoSession mDaoSession;

        //静态单例

        public static MyApplication instances;

        @Override

        public void onCreate() {

            super.onCreate();

            instances = this;

            setDatabase();

        }

        public static MyApplication getInstances(){

            return instances;

        }

        /**

        * 设置greenDao

        */

        private void setDatabase() {

            // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。

            // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。

            // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。

            // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。

            mHelper = new DaoMaster.DevOpenHelper(this, "sport-db", null);

            db = mHelper.getWritableDatabase();

            // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。

            mDaoMaster = new DaoMaster(db);

            mDaoSession = mDaoMaster.newSession();

        }

        public DaoSession getDaoSession() {

            return mDaoSession;

        }

        public SQLiteDatabase getDb() {

            return db;

        }

    }

    6、插入

    UserInfoDao userInfoDao = MyApplication.getInstances().getDaoSession().getUserInfoDao();

    UserInfo userInfo = new UserInfo();

    userInfo.setName("aaaaaaaaa");

    userInfoDao.insert(userInfo);

         查询

    UserInfoDao userInfoDao = MyApplication.getInstances().getDaoSession().getUserInfoDao();

    List list = userInfoDao.loadAll();

    其他方法请自行查看API。

    相关文章

      网友评论

        本文标题:GreenDao集成使用

        本文链接:https://www.haomeiwen.com/subject/zyxfiftx.html