GreenDao使用

工程里边

buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}


项目里边


apply plugin: 'com.android.application'


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



//写到defaultConfig {

  greendao {
        schemaVersion 1//数据库版本号
        //daoPackage 'com.example.demo1是自己的包名  后边不用删掉
        daoPackage 'com.example.demo1.greendao'//设置DaoMaster、DaoSession、Dao包名
        targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
        //targetGenDirTest:设置生成单元测试目录
        //generateTests:设置自动生成单元测试用例
    }


依赖
dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library
}

到这步同步一下studio

创建一个Bean 此实体类专门要存放数据库的对象

package com.example.demo4.Bean;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;

/**
 * @Auther: luck
 * @Date: 2019/3/18 18:42:40
 * @Description:
 */
@Entity
public class User {

    @Id
    String title;
    String image;
    @Generated(hash = 993849810)
    public User(String title, String image) {
        this.title = title;
        this.image = image;
    }
    @Generated(hash = 586692638)
    public User() {
    }
    public String getTitle() {
        return this.title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getImage() {
        return this.image;
    }
    public void setImage(String image) {
        this.image = image;
    }



}

到这步再同步一下studio 会自动添加三个类

在这里插入图片描述
然后在Activity里增删改查

创建App全局类

package com.example.demo1;

import android.app.Application;
import android.database.sqlite.SQLiteDatabase;

import com.example.demo1.greendao.DaoMaster;
import com.example.demo1.greendao.DaoSession;
import com.facebook.drawee.backends.pipeline.Fresco;

/**
 * @Auther: luck
 * @Date: 2019/3/15 18:17:43
 * @Description:
 */
public class App extends Application {

    private static DaoSession daoSession;
    @Override
    public void onCreate() {
        super.onCreate();
        //这Fresco图片加载框架
        Fresco.initialize(this);
        //参数1:上下文
        //参数2:数据库名称
        //参数3:游标工厂类
        DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "alex", null);
        //获取DataBase对象
        SQLiteDatabase db = openHelper.getWritableDatabase();
        //创建DaoMaster对象,所需DateBase数据库对象
        DaoMaster daoMaster = new DaoMaster(db);
        //创建DaoSession对象
        daoSession = daoMaster.newSession();
    }

    public static DaoSession getDaoSession() {
        return daoSession;
    }
}

package com.android.alex.greendao_demo.ui.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.android.alex.greendao_demo.R;
import com.android.alex.greendao_demo.data.User;
import com.android.alex.greendao_demo.gen.UserDao;
import com.android.alex.greendao_demo.ui.App;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.btn_add)
    Button btnAdd;
    @BindView(R.id.btn_query)
    Button btnQuery;
    @BindView(R.id.tv_content)
    TextView tvContent;
    @BindView(R.id.btn_delete)
    Button btnDelete;
    @BindView(R.id.btn_update)
    Button btnUpdate;

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

    @OnClick({R.id.btn_add, R.id.btn_delete, R.id.btn_update, R.id.btn_query})
    public void onViewClicked(View view) {
        UserDao userDao = App.getDaoSession().getUserDao();
        switch (view.getId()) {
            case R.id.btn_add:
                //增加数据
                for (int i = 0; i < 10; i++) {
                //user是自己建的是实体类
                    User user = new User();
                    user.setName("司马" + i);
                    userDao.insertOrReplace(user);
                }
                break;
            case R.id.btn_delete:
                //删除数据
                userDao.deleteByKey((long) 1);
                break;
            case R.id.btn_update:
                User cusomter = new User();
                cusomter.setId((long) 1);
                cusomter.setName("疾风剑豪");

                User stundent = new User();
                stundent.setId((long) 10);
                stundent.setName("Tom");

                User users[] = new User[]{cusomter,stundent};
                //userDao.update(cusomter);
                userDao.updateInTx(users);
                break;
            case R.id.btn_query:
                User user = userDao.load((long) 1);
                String userInfo = user.toString();
                tvContent.setText(userInfo);

                /*List<User> userList = userDao.loadAll();
                //借助一个字符串缓冲区
                StringBuilder sb = new StringBuilder();
                //遍历循环获取所有内容
                for (int i = 0; i < userList.size(); i++) {
                    User user = userList.get(i);
                    String userInfo = user.toString();
                    sb.append(userInfo + "---");
                }
                //查询到的所有数据设置给TextView进行显示
                String queryAllInfo = sb.toString();
                tvContent.setText(queryAllInfo);*/
                break;
        }
    }
}

 */
public class Net {
public static boolean hasNetwork(Context context){
        //创建连接管理器
        ConnectivityManager cm= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //获得最新流动状态
        NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
        return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
        }

}

Activity有网无网数据库代码

package com.example.luck.zz_zk2019318;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.example.luck.zz_zk2019318.Adapter.MyAdapter;
import com.example.luck.zz_zk2019318.Bean.BannerBean;
import com.example.luck.zz_zk2019318.Bean.ShowBean;
import com.example.luck.zz_zk2019318.Bean.User;
import com.example.luck.zz_zk2019318.Presenter.Presenter;
import com.example.luck.zz_zk2019318.Utils.Net;
import com.example.luck.zz_zk2019318.greendao.UserDao;
import com.google.gson.Gson;
import com.recker.flybanner.FlyBanner;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements com.example.luck.zz_zk2019318.View.View {

    private Presenter presenter;
    private FlyBanner flyBanner;
    private String imageUrl;
    private RecyclerView recyclerView;
    private UserDao userDao;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化Dao包
        userDao = App.getDaoDession().getUserDao();
        //flybanner控件
        flyBanner = findViewById(R.id.flyBanner);
        recyclerView = findViewById(R.id.recyclerView);
        //实例化p层
        presenter = new Presenter(this);
        //p层轮播图方法
        presenter.getBanner();
        //p关联  内存泄漏
        presenter.onAcctch(this);
        //网络判断
        boolean b = Net.HasWork(this);
        //有网拿到p层展示方法
        if (b){
            presenter.getShow();
        }else {
            //没网查询适配器
            List<User> users = userDao.loadAll();
            //判断查询为空的话吐司
            if (users.size()==0){
            //做一个吐司的操作都行

            }else {

                //新建一个集合   此集合和你的解析的实体类一个泛型
                List<ShowBean.ResultBean> data = new ArrayList<>();
                //遍历得到每一个title  image
                for (int i = 0; i <users.size() ; i++) {
                    String title = users.get(i).getTitle();
                    String image = users.get(i).getImage();
                    //实力话解析那个实体类  把得到的title  image设置给解析的实体类做展示
                    ShowBean.ResultBean bean = new ShowBean.ResultBean();
                    bean.setName(title);
                    bean.setImageUrl(image);
                    //将这个解析的实体类添加到新建的集合中
                    data.add(bean);
                }
                //设置给Adapter
                MyAdapter myAdapter = new MyAdapter(MainActivity.this,data);
                GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2);
                recyclerView.setLayoutManager(gridLayoutManager);
                recyclerView.setAdapter(myAdapter);

            }
        }
    }

    @Override
    //这是获取flyBanner的数据方法
    public void getBannnerdata(final String data) {
//
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                BannerBean bannerBean = gson.fromJson(data, BannerBean.class);
                List<BannerBean.ResultBean> result = bannerBean.getResult();
                List<String> uu=new ArrayList<>();
                for (int i = 0; i <3; i++) {
                    imageUrl = result.get(i).getImageUrl();
                    uu.add(imageUrl);
                }
                Toast.makeText(MainActivity.this,imageUrl+"",Toast.LENGTH_SHORT).show();
                flyBanner.setImagesUrl(uu);
            }
        });

    }
    //这是获取展示的数据方法
    @Override
    public void getShowdata(final String data) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //解析
                Gson gson = new Gson();
                ShowBean showBean = gson.fromJson(data, ShowBean.class);
                List<ShowBean.ResultBean> result = showBean.getResult();
                //再添加之前先清空数据库
                userDao.deleteAll();
                //遍历拿到所有解析出来的imageUrl   name;
                for (int i = 0; i <result.size() ; i++) {

                    String imageUrl = result.get(i).getImageUrl();
                    String name = result.get(i).getName();
                    //在这实例化自己建的User
                    User user = new User();
                    user.setImage(imageUrl);//把值设置给user
                    user.setTitle(name);//把值设置给user

                    userDao.insert(user); //将这个user添加到数据库
                }

                MyAdapter myAdapter = new MyAdapter(MainActivity.this,result);
                GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2);
                recyclerView.setLayoutManager(gridLayoutManager);
                recyclerView.setAdapter(myAdapter);

                myAdapter.setOngetToas(new MyAdapter.OngetToas() {
                    @Override
                    public void getdata(String  name) {
                        Toast.makeText(MainActivity.this,name+"",Toast.LENGTH_SHORT).show();
                    }
                });


            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.Ondettch();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值