GreenDao的简单使用

1.  添加依赖

      1.1在项目的gradle里面的repositories添加

 mavenCentral()

     1.2 在项目的gradle里面的dependencies添加

  classpath 'com.android.tools.build:gradle:3.1.1'
  classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

  1.3 在medo的gradle里面的android添加

greendao{
        schemaVersion 1
        daoPackage 'com.greendao.gen'
        targetGenDir 'src/main/java'
    }

1.4在medo的gradle里面的最上添加

apply plugin: 'org.greenrobot.greendao' 

1.5在medo的gradle里面的dependencies添加

 implementation 'org.greenrobot:greendao:3.2.2'

2.在Application里面写入

package com.example.greendao;

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

import com.greendao.gen.DaoMaster;
import com.greendao.gen.DaoSession;

public class MyApplication extends Application {
    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    public static MyApplication instances;
    @Override
    public void onCreate() {
        super.onCreate();
        instances = this;
        setDatabase();
    }
    public static MyApplication getInstances(){
        return instances;
    }
    private void setDatabase() {
        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO已经帮你做了。
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。

        mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
        db = mHelper.getWritableDatabase();
        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }
    public DaoSession getDaoSession() {
        return mDaoSession;
    }
    public SQLiteDatabase getDb() {
        return db;
    }
}


3.写javaBean

@Entity //表示这个实体类一会会在数据库中生成对应的表
public class User {

    @Id // 表示该字段是id,注意该字段的数据类型为包装类型Long
    private Long id;
     @Property(nameInDb = "NAME") //则表示该属性将作为表的一个字段,其中nameInDb看名字就知道这个属性在数据库中对应的数据名称。
    private String name;

    @Transient //该注解表示这个属性将不会作为数据表中的一个字段。
    private int tempUsageCount; // not persisted
}

写完之后按Shift+F12进行自动编写greenDao

4进行增删改查
 

package com.example.greendao;

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

import com.greendao.gen.UserDao;

import org.greenrobot.greendao.query.QueryBuilder;
import org.greenrobot.greendao.query.WhereCondition;

import java.util.List;
import java.util.Random;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button zeng;
    private Button shan;
    private Button gai;
    private Button cha;
    private UserDao mUserDao;
    private TextView mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();

    }

    private void initView() {
        zeng = (Button) findViewById(R.id.zeng);
        shan = (Button) findViewById(R.id.shan);
        gai = (Button) findViewById(R.id.gai);
        cha = (Button) findViewById(R.id.cha);

        zeng.setOnClickListener(this);
        shan.setOnClickListener(this);
        gai.setOnClickListener(this);
        cha.setOnClickListener(this);
        mContext = (TextView) findViewById(R.id.mContext);
        mContext.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.zeng:
                for (int i = 0; i < 10; i++) {
                    Random mrandom = new Random();
                    int m = mrandom.nextInt();
                    User mUser = new User((long) i, "anye3"+m);
                    mUserDao.insert(mUser);//添加一个\
                    //mUserDao.insertOrReplace(mUser);
                }
                //mUserDao.insertOrReplace(mUser);//insertOrReplace()数据存在则替换,数据不存在则插入
                break;
            case R.id.shan:
                //mUserDao.deleteByKey((long)2);// 删除id
                //daoSession.delete(s);
                mUserDao.deleteAll();
               //删除有两种方式:删除()和deleteAll();分别表示删除单个和删除所有。
                break;
            case R.id.gai:
                User mUser = new User((long) 2, "anye0803");
                mUserDao.update(mUser);
                break;
            case R.id.cha:
                //LOADALL():查询所有数据。
                //queryRaw():根据条件查询。 List<User> user = daoSession.queryRaw(User.class, " where id = ?", s);
                List<User> users = mUserDao.loadAll();
                String userName = "";

                QueryBuilder<User> qb = mUserDao.queryBuilder();

                //List<User> list1 = qb.list();
                List<User> list = qb.orderDesc(UserDao.Properties.Id).list();
                //qb.where(new WhereCondition.StringCondition("")).list();
                StringBuffer stringBuffer = new StringBuffer();
                for (int i = 0; i < list.size(); i++) {
                    String name = list.get(i).getName();
                    stringBuffer.append(name);
                }
                mContext.setText("查询全部数据==>" + stringBuffer);


                /*for (int i = 0; i < users.size(); i++) {
                    userName += users.get(i).getName() + ",";
                }
                mContext.setText("查询全部数据==>" + userName);*/

                break;
        }
    }
}

相关博客:

https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650244473&idx=1&sn=9775e890585b802456a50fd8a3a418b6&chksm=88637416bf14fd0069713308d73fccd46c88a6512856a070390cefda784624c36bcff9a77e97&mpshare=1&scene=23&srcid=1127vWRvtVWlg4RD2lHYBLjq#rd

https://blog.csdn.net/CrazyMo_/article/details/54629916

                https://blog.csdn.net/qq_25412055/article/details/52795295\

https://www.jianshu.com/p/53083f782ea2

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值