• Android GreenDao使用教程


    1、在build.gradle里添加相关依赖

    apply plugin: 'org.greenrobot.greendao'
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
        }
    }

    注意位置

    2、添加一个Dao

    @Entity
    public class User {
        @Id(autoincrement = true)
        private Long id;
        private String name;
        private int age;
        private String sex;
    
    }

    Build会自动生成代码,如果不写buildscript 则不会生成
    生成代码如下

    import org.greenrobot.greendao.annotation.Entity;
    import org.greenrobot.greendao.annotation.Id;
    import org.greenrobot.greendao.annotation.Generated;
    
    @Entity
    public class User {
        @Id(autoincrement = true)
        private Long id;
        private String name;
        private int age;
        private String sex;
        @Generated(hash = 689493095)
        public User(Long id, String name, int age, String sex) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
        @Generated(hash = 586692638)
        public User() {
        }
        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;
        }
        public int getAge() {
            return this.age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getSex() {
            return this.sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    
    }

    3,同样建立一个新实体类,build

    @Entity
    public class dayStep {
        @Id
        private long id;
        private String date;
        private int step;  
        private Long sportId;
        @ToOne(joinProperty = " sportId")
        private SportInfo sportInfo;//关系表
    }


    4、创建一个application类,在application中完成DaoSession的初始化,避免以后重复初始化,便于使用。

     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;
        }
    }

    5、Greendao操作数据库文件(增,删,改,查)

     /**
         * 增
         */
        public void insert()
        {
            String date = new Date().toString();
            mDayStep = new dayStep(null,date,0);//第一个是id值,因为是自增长所以不用传入
            dao.insert(mDayStep);
        }
     
     
        /**
         * 查
         */
        public void Search()
        {
            //方法一
            List<dayStep> mDayStep = dao.loadAll();
            //方法二
            //List<dayStep> mDayStep = dao.queryBuilder().list();
            //方法三 惰性加载
            //List<dayStep> mDayStep = dao.queryBuilder().listLazy();
            for (int i = 0; i < mDayStep.size(); i++) {
                String date = "";
                date = mDayStep.get(i).getDate();
                Log.d("cc", "id:  "+i+"date:  "+date);
            }
     
     
        }
     
     
        /**
         * 删
         * @param i 删除数据的id
         */
        public void delete(long i)
        {
            dao.deleteByKey(i);
            //当然Greendao还提供了其他的删除方法,只是传值不同而已
        }
     
     
        /**
         *改
         * @param i
         * @param date
         */
        public void correct(long i,String date)
        {
            mDayStep new dayStep((long) i,date,0);
            dao.update(mDayStep);
        }
     
     
       /**
         *修改或者替换(有的话就修改,没有则替换)
         */ 
        public void insertOrReplace(long i,String date)
      {
          mDayStep = new dayStep((long) i,date,0);
          dao.insertOrReplace(mDayStep);
        }
     
     
       /**
         *查找符合某一字段的所有元素
         */
       public void searchEveryWhere(String str)
       {
        List<dayStep> mList = dao.queryBuilder()
                    .where(dao.date.eq(str)).build().listLazy();
       }
        List<dayStep> mList = dao.queryBuilder()
                    .where(dao.date.eq(str)).build().listLazy();
       }

     6、最重要一步,在AndroidManifest.xml里增加一句话

    <application
    android:name=".MyApplication"
  • 相关阅读:
    09_传智播客iOS视频教程_@property
    08_传智播客iOS视频教程_点语法
    07_传智播客iOS视频教程_手动向对象发送SEL消息
    接软件开发项目,你需要知道这些!
    接软件开发项目,你需要知道这些!
    这些代码优化的方法,你都用过吗?
    这些代码优化的方法,你都用过吗?
    这些代码优化的方法,你都用过吗?
    顶级程序员和普通程序员在思维模式上的5个区别!
    顶级程序员和普通程序员在思维模式上的5个区别!
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/9735220.html
Copyright © 2020-2023  润新知