GreenDao 3.0的配置及使用

作者: 惜梦哥哥_ | 来源:发表于2017-02-22 13:30 被阅读825次

    GreenDao是一个优质的开源数据库,每秒支持上千次的增删改查,效率非常高,对比同类开源数据库,稳稳排在第一位,更多详细介绍:https://github.com/greenrobot/greenDAO.

    依赖:

    compile 'org.greenrobot:greendao:3.2.0'
    

    依赖成功之后需要对数据库进行配置,在3.0之前,需要手动写类来进行配置,到了3.0之后,可以直接在build.gradle文件中配置.

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
        }
    }
    
    apply plugin: 'org.greenrobot.greendao'
    
    //配置数据库,配置版本号即可,其他的只需要保持默认
    greendao {
        //数据库版本号
        schemaVersion 1
        //数据库所在包
    //    daoPackage 'com.xxxxx_yk.greendaodemo.dao'
        //生成的数据库文件的目录
    //    targetGenDir 'src/main/java'
        //自动生成单元测试
    //    generateTests true
        //生成的单元测试目录
    //    targetGenDirTests
    }
    

    全部配置成功之后,建立数据库实体模型

    @Entity
    public class Student {
    
        @Id(autoincrement = true)
        private Long _id;
    
        @Unique
        @NotNull
        @Property(nameInDb = "username")
        private String name;
    
        @NotNull
        private String age;
    
        @Transient
        private String info;
    }
    

    注解解析:
    @Entity 标记该类为数据库实体模型,指示GreendDao生成代码
    @Id(autoincrement = true) 配置id自动增长
    @Unique 字段约束,保证值唯一
    @NotNull 字段不允许为空
    @Property(nameInDb = "username") 设置该列名非默认,采用自定义
    @Transient 设置该键在数据库中排除

    完成创建之后,点击Sync Progect,GeenDao将会自动生成代码,特别注意,不要轻易动自动生成的代码.

    Paste_Image.png
    DaoMaster:该类保存了数据库对象(SQLiteDatabase).它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现.
    DaoSession:提供对数据库进行增删改查的方法.
    StudentDao:GreenDao对于每个实体生成的类,即配置@Entity之后的类.
    

    初始化核心对象:

    public class GreenDaoHelper {
    
        private static DaoMaster.DevOpenHelper mHelper;
        private static SQLiteDatabase mDb;
        private static DaoMaster mDaoMaster;
        private static DaoSession mDaoSession;
    
        /**
        * 设置greenDao
        */
        public static void initDatabase() {
            mHelper = new DaoMaster.DevOpenHelper(MyApp.mContext, "student_db", null);
            mDb = mHelper.getWritableDatabase();
            mDaoMaster = new DaoMaster(mDb);
            mDaoSession = mDaoMaster.newSession();
        }
    
        public static DaoSession getDaoSession() {
            return mDaoSession;
        }
        public static SQLiteDatabase getDb() {
            return mDb;
        }
    }
    

    在Appliction中应用

    public class MyApp extends Application {
    
        public static Context mContext;
    
        @Override
        public void onCreate() {
            super.onCreate();
            mContext = getApplicationContext();
            GreenDaoHelper.initDatabase();
        }
    }
    

    至此,GreedDao配置完成,接下来就可以进行增删改查了.

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取数据库对象
        mStudentDao = GreenDaoHelper.getDaoSession().getStudentDao();
    
        //插入一条数据,传null  id会自增
        mStudentDao.insert(new Student(null,"张三","23"));
    
        //删除一条数据
        mStudentDao.delete(new Student(null,"张三","23"));
    
        //根据主键删除一条数据
        mStudentDao.deleteByKey(1L);
    
        //删除全部数据
        mStudentDao.deleteAll();
    
        //修改一条数据
        mStudentDao.update(new Student(null,"张三","25"));
    
        //查询全部数据
        mStudentDao.loadAll();
    
        //查询一条数据,where中填写条件
        mStudentDao.queryBuilder().where(StudentDao.Properties.Name.eq("张三")).unique();
    
    }
    

    至此,GreenDao应用完毕.

    相关文章

      网友评论

        本文标题:GreenDao 3.0的配置及使用

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