android 数据库GreenDao简单使用

2019-01-21  本文已影响0人  NullPoint3Exce

GreenDao是映射java数据对象到Sqlite数据库表中的一个第三方框架。
因为它封装了对数据库表的操作,框架本身小,使用简单,使用我们经常会在项目里面去用到它。
1.配置依赖

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

   project的build.gradle 的buildscript-->dependencies添加
   classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

   //方便查看数据库内容,添加的查看工具
   implementation 'com.facebook.stetho:stetho:1.5.0'

2.编译一下,会自动生成三个文件 BannerItemDao、DaoMaster、DaoSession
这三个存放目录配置在module的build.gradle文件里的android下。eg:

apply plugin: 'org.greenrobot.greendao' // apply plugin

android {
...忽略
greendao {
       schemaVersion 1  // 数据库的版本号
       daoPackage 'com.test.dao'  // 包名
       targetGenDir 'src/main/java' // 存放的目录地址
   }
}

3.创建bean实体对象,映射数据库的表

@Entity
public class BannerItem {

    private String desc;
    @Property(nameInDb = "bid")
    @Id(autoincrement = true)
    private Long bid;
    private long itmeId;
    private String imagePath;
    private String title;
    private String url;

....忽略
}

4.然后在application里初始化

  public void initDbaseDao(Context context) {

        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "xx.db");

        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
        daoSession = daoMaster.newSession();

    }

    public static DaoSession getDaoSession() {
        return daoSession;
    }

5.开始使用

//插入数据
    public void insertData() {

        Random random = new Random();//指定种子数字
        int index = random.nextInt(999);

        Log.d(TAG, "insertData: index=" + index);

        DaoSession daoSession = JiyunApplication.getDaoSession();
        BannerItem bannerItem = new BannerItem();
        bannerItem.setItmeId((int) index);
        bannerItem.setImagePath(img_url);
        bannerItem.setDesc("this is description");
        bannerItem.setUrl("this is url  ");
        bannerItem.setTitle("hehe");
        daoSession.getBannerItemDao().insert(bannerItem);

 //daoSession.getBannerItemDao().delete(bannerItem); 删除某项数据
  //daoSession.getBannerItemDao().update(bannerItem); 更新某项数据
  // List<BannerItem> bannerItemList = daoSession.getBannerItemDao().loadAll(); 获取所有数据

  // 根据条件获取数据
    // List<Person> personList =  daoSession.queryBuilder(Person.class)
        //          .where(PersonDao.Properties.Name.eq(name))// equals
            //      .build()
                //  .list();
 // 根据条件获取一条数据
  //   Person  person =  daoSession.queryBuilder(Person.class)
   //                .where(PersonDao.Properties.Name.eq(name))// equals
   //                .build()
     //              .unique();
    }
上一篇下一篇

猜你喜欢

热点阅读