Greendao使用
第一步,添加依赖,在项目目录中的build.gradle添加以下依赖
//在repositories里添加mavenCentral()【如果添加了就不用再添加了!!!】
repositories {
mavenCentral()
}
//在dependencies里添加
dependencies {
classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2’ // add plugin
}
第二步,添加依赖,在App目录中的build.gradle添加以下依赖
apply plugin: ‘org.greenrobot.greendao’ // apply plugin
//在dependencies里添加
implementation ‘org.greenrobot:greendao:3.2.2’ // add library
第三步,在App目录中的build.gradle添加生成操作数据库类
greendao {
schemaVersion 1 //版本
daoPackage ‘ming.abner.com.app1102.greendao’ // 一般为app包名+生成文件的文件夹名
targetGenDir ‘src/main/java’ //生成文件路径
}
第四步,使用
创建实体类JavaBean,例如,你想对资讯列表进行缓存,你可以创建个NewsBean,想缓存哪些数据,就创建对应数据的JavaBean
缓存两种方式
第一种,最简单就,缓存请求回来的json数据,创建后,两个字段就可以了,一个是主键Id,一个是用于缓存的String,data 写好之后,按住Ctrl+F9,或者点小锤子,或者点击最上面Build再点击Make Project,就可以了
@Entity
public class NewsBean{
@Id(autoincrement = true)
private Long id;
private String data;
}
第二种,缓存对象,就是以对象的形式进行缓存,根据你请求的数据进行写JavaBean,例如:
请求Json数据形式
{
“items”: [
{
“title”: “我是测试数据001”,
“image”: “https://img.huxiucdn.com/article/cover/201809/06/101957946778.jpg?imageView2/1/w/400/h/225/|imageMogr2/strip/interlace/1/quality/85/format/jpg”,
“desc”: “我是描述信息”
},
{
“title”: “我是测试数据002”,
“image”: “https://img.huxiucdn.com/article/cover/201809/06/083640902580.jpg?imageView2/1/w/400/h/225/|imageMogr2/strip/interlace/1/quality/85/format/jpg”,
“desc”: “我是描述信息”
}
]
}
缓存对象形式,就是缓存需要缓存的字段,title,image,desc,当然了,在实际开发中,根据返回数据进行写
@Entity
public class NewsBean{
@Id(autoincrement = true)
private Long id;
private String title;
private String image;
private String desc;
}
写好之后,按住Ctrl+F9,或者点小锤子,或者点击最上面Build再点击Make Project,就可以了
第五步,生成
生成之后,就会生成一个greendao包,包里的类就是我们操作数据库的类
第六步,创建数据库操作类
public class NewsBeanJsonUtils {
private NewsBeanJsonDao newsDao;
private NewsBeanJsonUtils() {
}
private static NewsBeanJsonUtils mNewsBeanUtils;
public static NewsBeanJsonUtils getNewsBeanJsonUtils() {
if (mNewsBeanUtils == null) {
mNewsBeanUtils = new NewsBeanJsonUtils();
}
return mNewsBeanUtils;
}
//初始化
public void init(Context context) {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "news");
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster mDaoMaster = new DaoMaster(db);
newsDao=mDaoMaster.newSession().getNewsBeanJsonDao();
}
//增
public void insert(NewsBeanJson newsBean){
newsDao.insert(newsBean);
}
//查询全部
public List<NewsBeanJson> queryAll(){
return newsDao.loadAll();
}
//查询单个
public NewsBeanJson query(String key){
return newsDao.load(Long.parseLong(key));
}
//删除全部
public void deleteAll(){
newsDao.deleteAll();
}
//删除单个
public void delete(String key){
newsDao.deleteByKey(Long.parseLong(key));
}
//改
public void update(NewsBeanJson newsBean){
newsDao.update(newsBean);
}
}