greendao如何使用

在总项目里导的依赖

buildscript {
    repositories {

        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

还有在自己项目导的依赖

greendao{
    schemaVersion 2 // 数据库版本号
    daoPackage  'com.bwie.myweek1.model.db'//greenDao 自动生成的代码保存的包名
    targetGenDir   'src/main/java' //自动生成的代码存储的路径,默认是 build/generated/source/greendao.
    generateTests false //true的时候自动生成测试单元
    targetGenDirTests 'src/main/java' //应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
}
implementation 'org.greenrobot:greendao:3.2.2'

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

添加的数据库需要添加注解如下

@Entity
public class GreenBean {

    @Id()
    Long id;
    private int followMovie;
    private String imageUrl;
    private String name;
    private int rank;
    private long releaseTime;
    private String releaseTimeShow;
    private String summary;


下面写Util的app类

public class MyAppLication extends Application {
    private DaoSession daoSession;

   private static int MAX_MEM = 30 * ByteConstants.MB;

    @Override
    public void onCreate() {
        super.onCreate();
        DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
                .setMaxCacheSize(MAX_MEM)
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
                .setBaseDirectoryName("immage_ok")
                .build();
        ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(diskCacheConfig)
                .build();
        Fresco.initialize(this, imagePipelineConfig);
    }

    private void initGreenDao() {
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "text0.db");
        SQLiteDatabase writableDatabase = devOpenHelper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(writableDatabase);
        daoSession = daoMaster.newSession();
    }

    public DaoSession getDaoSession() {
        return daoSession;
    }
}

GreenUtil类

public class GreenBeanUtils {

    private final MyAppLication myAppLication;
    private final DaoSession daoSession;

    public GreenBeanUtils(Context context) {
        myAppLication = (MyAppLication) context.getApplicationContext();
        daoSession = myAppLication.getDaoSession();
    }
    public void insertData(GreenBean listBean){
        DaoSession daoSession = myAppLication.getDaoSession();
        daoSession.insertOrReplace(listBean);
    }
    public List<GreenBean> queryAll(){
        List<GreenBean> listBeans = myAppLication.getDaoSession().loadAll(GreenBean.class);
        for (GreenBean listBean : listBeans) {
            Log.e("my",""+listBean.getName());
        }
        return listBeans;
    }



}

在Activity中如何应用

   @Override
    public void onSuccess(final NewsBean newsBean) {
        /*ArrayList<NewsBean.ResultBean> result = newsBean.getResult();*/
        GreenBeanUtils greenBeanUtils = new GreenBeanUtils(this);

        final List<NewsBean.ResultBean> result = newsBean.getResult();
        for (NewsBean.ResultBean vv : result) {
            GreenBean greenBean = new GreenBean();
            greenBean.setFollowMovie(vv.getFollowMovie());
            greenBean.setImageUrl(vv.getImageUrl());
            greenBean.setName(vv.getName());
            greenBean.setRank(vv.getRank());
            greenBean.setReleaseTime(vv.getReleaseTime());
            greenBean.setSummary(vv.getSummary());
            greenBeanUtils.insertData(greenBean);
        }
        greenBeanUtils.queryAll();

activity类

public class MainActivity extends AppCompatActivity implements IMainView {

    @BindView(R.id.xRecyclerView)
    XRecyclerView xRecyclerView;
    private MainPresenter mainPresenter;
    private MyAdapter myAdapter;
    private Unbinder bind;
    private int net;
    private GreenDaoUtils greenDaoUtils;
    private List<GreenBean> greenBeans;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bind = ButterKnife.bind(this);
        initView();
        initData();
    }

    private void initView() {
        greenDaoUtils = new GreenDaoUtils(this);
        xRecyclerView.setPullRefreshEnabled(true);
        xRecyclerView.setLoadingMoreEnabled(true);
        xRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
        xRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        myAdapter = new MyAdapter(this);
        mainPresenter = new MainPresenter();
        net = RetrofitUtils.getNetype(this);
        Log.d("myMessage", "net" + net);
        if (net != -1) {
            mainPresenter.loadNet();
            mainPresenter.setView(this);
        } else {
            greenBeans = greenDaoUtils.queryAll();
            if (greenBeans.size() == 0) {
                Toast.makeText(this, "无缓存", Toast.LENGTH_SHORT).show();
            } else {
                getDb();
            }

        }
    }
    private void getDb() {

        List<ShopBean.ResultBean> list = new ArrayList<>();
        for (int i = 0; i < greenBeans.size(); i++) {
            String name = greenBeans.get(i).getCommodityName();
            String imageUrl = greenBeans.get(i).getMasterPic();
            String releaseTimeShow = greenBeans.get(i).getPrice();
            ShopBean.ResultBean resultBean = new ShopBean.ResultBean(name, imageUrl, releaseTimeShow);
            list.add(resultBean);
        }
        myAdapter.setData(list);
        myAdapter.notifyDataSetChanged();
    }
//获取网络状态嘛 -1 没网  1 WIFI 2 手机网络 
        Log.d("myMessage", "net" + net);
        if (net != -1) {
            //有网展示数据
            mainPresenter.loadNet();
            mainPresenter.setView(this);
        } else {
            greenBeans = greenDaoUtils.queryAll();
            if (greenBeans.size() == 0) {
                //无网络无缓存
                Toast.makeText(this, "无缓存", Toast.LENGTH_SHORT).show();
            } else {
                //查询数据库展示
                getDb();
            }

        }
    }
    private void getDb() {

        List<ShopBean.ResultBean> list = new ArrayList<>();
        //循环遍历
        for (int i = 0; i < greenBeans.size(); i++) {
            String name = greenBeans.get(i).getCommodityName();
            String imageUrl = greenBeans.get(i).getMasterPic();
            String releaseTimeShow = greenBeans.get(i).getPrice();
            ShopBean.ResultBean resultBean = new ShopBean.ResultBean(name, imageUrl, releaseTimeShow);
            list.add(resultBean);
        }
        //设置适配器数据
        myAdapter.setData(list);
        myAdapter.notifyDataSetChanged();
        }
    private void initData() {
        xRecyclerView.setAdapter(myAdapter);
        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                if (net == -1) {
                    Toast.makeText(MainActivity.this, "无网络啊", Toast.LENGTH_SHORT).show();
                } else {
                    mainPresenter.loadNet();
                    xRecyclerView.refreshComplete();
                }
            }

            @Override
            public void onLoadMore() {
                if (net == -1) {
                    Toast.makeText(MainActivity.this, "无网络啊", Toast.LENGTH_SHORT).show();
                } else {
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            mainPresenter.loadNet();
                            xRecyclerView.loadMoreComplete();
                        }
                    }, 2000);
                }
            }
        });
    }

    @Override
    public void onSuccess(ShopBean shopBean) {
        List<ShopBean.ResultBean> result = shopBean.getResult();
        myAdapter.setData(result);
        for (ShopBean.ResultBean vv : result) {
            GreenBean greenBean = new GreenBean();
            greenBean.setSaleNum(vv.getSaleNum());
            greenBean.setPrice(vv.getPrice());
            greenBean.setMasterPic(vv.getMasterPic());
            greenBean.setCommodityName(vv.getCommodityName());
            greenDaoUtils.insertData(greenBean);
        }
        greenDaoUtils.queryAll();
    }

    @Override
    public void onFail(String msg) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mainPresenter.detaChView();
        bind.unbind();
    }

    Handler handler = new Handler();
}

猜你喜欢

转载自blog.csdn.net/qq_40432465/article/details/88627097