Android greenDao 快速接入流程、问题

资料参考:https://www.cnblogs.com/whoislcj/p/5651396.html

这里只说接入使用流程

1、接入

步骤依次往下

在工程build.gradle中

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

在model build.gradle中

apply plugin: 'org.greenrobot.greendao'


dependencies {
    compile 'org.greenrobot:greendao:3.0.1'
}
greendao {
    targetGenDir 'src/main/java'
}

创建数据结构

这里有一个特别注意:id的类型必须是Long 不可以是long 或者其他

@Entity
public class User {
    @Id(autoincrement = true)
    private Long id;
    private String name;
    private int age;

   //下面省去了 setter/getter
}

然后点击build  make project,自动生成三个类

然后搞我这个东西

package com.fengmap.kotlindemo.util;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.fengmap.kotlindemo.bean.DaoMaster;
import com.fengmap.kotlindemo.bean.DaoSession;
import com.fengmap.kotlindemo.bean.NewsInfo;
import com.fengmap.kotlindemo.bean.NewsInfoDao;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

/**
 * Created by bai on 2018/12/19.
 */

public class DBManager {
    private final static String dbName = "test_db";
    private static DBManager mInstance;
    private DaoMaster.DevOpenHelper openHelper;
    private Context context;

    public DBManager(Context context) {
        this.context = context;
        openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }

    /**
     * 获取单例引用
     *
     * @param context
     * @return
     */
    public static DBManager getInstance(Context context) {
        if (mInstance == null) {
            synchronized (DBManager.class) {
                if (mInstance == null) {
                    mInstance = new DBManager(context);
                }
            }
        }
        return mInstance;
    }

    /**
     * 获取可读数据库
     */
    private SQLiteDatabase getReadableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getReadableDatabase();
        return db;
    }

    /**
     * 获取可写数据库
     */
    private SQLiteDatabase getWritableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getWritableDatabase();
        return db;
    }

    /**
     * 插入一条记录
     *
     * @param user
     */
    public void insertUser(NewsInfo user) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao userDao = daoSession.getNewsInfoDao();
        userDao.insertOrReplace(user);
    }

    /**
     * 插入用户集合
     *
     * @param users
     */
    public void insertUserList(List<NewsInfo> users) {
        if (users == null || users.isEmpty()) {
            return;
        }
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao NewsInfoDao = daoSession.getNewsInfoDao();
        NewsInfoDao.insertInTx(users);
    }

    /**
     * 删除一条记录
     *
     * @param NewsInfo
     */
    public void deleteUser(NewsInfo NewsInfo) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao NewsInfoDao = daoSession.getNewsInfoDao();
        NewsInfoDao.delete(NewsInfo);
    }

    /**
     * 更新一条记录
     *
     * @param NewsInfo
     */
    public void updateUser(NewsInfo NewsInfo) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao NewsInfoDao = daoSession.getNewsInfoDao();
        NewsInfoDao.update(NewsInfo);
    }

    /**
     * 查询用户列表
     */
    public List<NewsInfo> queryUserList() {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao NewsInfoDao = daoSession.getNewsInfoDao();
        QueryBuilder<NewsInfo> qb = NewsInfoDao.queryBuilder();
        List<NewsInfo> list = qb.list();
        return list;
    }

    /**
     * 查询用户列表
     */
    public boolean queryUserById(Long id) {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        NewsInfoDao newsInfoDao = daoSession.getNewsInfoDao();
        QueryBuilder<NewsInfo> qb = newsInfoDao.queryBuilder();
        qb.where(NewsInfoDao.Properties.Id.gt(id)).orderAsc(NewsInfoDao.Properties.Id);
        List<NewsInfo> list = qb.list();
        if (list != null && list.size() > 0) {
            return true;
        }
        return false;
    }
}

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值