greendao单表简单使用

第一步导依赖吧(网络读写权限加一下)

  //导入GreenDao依赖
    implementation 'org.greenrobot:greendao:3.2.2'

再在android下添加配置

    //添加GreenDao的配置
    greendao {
        schemaVersion 1//数据库版本号,必须依次增大,用来判断数据库版本,是否需要更新
        daoPackage 'com.bawei.shopping_trolley.greendao'//设置DaoMaster、DaoSession、Dao包名
        targetGenDir 'src/main/java'// 设置DaoMaster、DaoSession、Dao目录
    }

同页面顶端加

apply plugin: 'org.greenrobot.greendao'

再在项目的根build.gradle下的dependencies添加

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'//必须加

接着呢要写一个bean类 来生成greenDao库此Bean类要和你解析的类里对象相同 也可以复用解析的类 在bean里添加两个注解

@Entity  //类上面要加的注解
public class listbean {
    @Id //要加的注解 里面还有(autoincrement = true)方法 目的是主键自增
    private long id;//自己定义一个long类型的id 必须是long类型
    private int pid;
    private double bargainPrice;
    private String createtime;
    private String detailUrl;
    接着setget方法 锤子锤一下
    }

这时候准备工作是做好了该用它了 用的时候首先得初始化它

 private void initDao() {
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this,"green");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        DaoSession daoSession = daoMaster.newSession();
        mUserDao = daoSession.getListbeanDao(); //提成全局
    }

然后做网络判断 如果有网的话 让它加载数据的同时 再存库


            @Override
            public void CallBackListBean(List<listbean> listbean) {
                    for (int i = 0; i< listbean.size(); i++){
                        listbean listbe = listbean.get(i);
                        //listbean是我请求回来的集合 遍历存库
                        listbe.setBargainPrice(listbe.getBargainPrice());
                        listbe.setTitle(listbe.getTitle());
                        listbe.setNum(listbe.getNum());
                        listbe.setDetailUrl(listbe.getDetailUrl());
                        listbe.setPrice(listbe.getPrice());
                        listbe.setId(i);//id是我自己添加 在这里给id赋值 取库时候要用

                        mUserDao.insertOrReplace(listbe);
                        String string = mUserDao.getDatabase().toString();
                        Log.i("CCCC", "onClick: " + listbe.getTitle().toString()+"==="+string);

                    }
            }
        });

没网的时候要走没网的方法 也就是去取库展示缓存好的数据

 //没网状态下查询
   private void noNet() {
        QueryBuilder builder = mUserDao.queryBuilder();
       List<Object> list = builder.orderAsc(listbeanDao.Properties.Id)
                .list();

       ArrayList<listbean> listbeans = new ArrayList<>();
       for (Object o : list){
           if ( o instanceof listbean){
               String title = ((listbean) o).getTitle();
               String detailUrl = ((listbean) o).getDetailUrl();
               double price = ((listbean) o).getPrice();
               int num = ((listbean) o).getNum();
               int pid = ((listbean) o).getPid();

               listbean dao = new listbean();
               dao.setNum(num);
               dao.setTitle(title);
               dao.setDetailUrl(detailUrl);
               dao.setPid(pid);
               dao.setPrice(price);
               listbeans.add(dao);
           }
       }
        CommodityAdapter adapter = new CommodityAdapter(MainActivity.this, listbeans);
        recyclerview.setAdapter(adapter);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 1);
        recyclerview.setLayoutManager(gridLayoutManager);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值