Android GreenDao使用教程

幽沉谢世事,俯默窥唐虞。这篇文章主要讲述Android GreenDao使用教程相关的知识,希望能为你提供帮助。
1、在build.gradle里添加相关依赖

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

【Android GreenDao使用教程】注意位置
Android GreenDao使用教程

文章图片

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"


    推荐阅读