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