Android集成GreenDao数据库的操作步骤

 更新时间:2022年10月11日 14:46:45   作者:xiangzhihong8  
这篇文章主要介绍了Android集成GreenDao数据库,使用数据库存储时候,一般都会使用一些第三方ORM框架,比如GreenDao,本文分几步给大家介绍Android集成GreenDao数据库的方法,需要的朋友可以参考下

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。
目前,Android系统中提供了3种方式的数据持久化技术,即文件存储、SharedPreferences存储以及数据库存储。当然,除了这3种方式之外,你还可以将数据保存在手机的SD卡中,不过使用文件、Shared Preferences或数据库来保存数据会相对更简单一些,而且比起将数据保存在SD卡中会更加地安全。Shared Preferences通常用在轻量级的数据存储场景中,比如账号/密码的存储,而数据库则用在数据量比较大的场景中,比如聊天数据的存储。

现在,使用数据库存储时候,一般都会使用一些第三方ORM框架,比如GreenDao。在Android开发中,集成Greendao通常需要如下几步:

1.首先,在项目的build.gradle文件中添加依赖:

 classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // add plugin

2.然后,在app/build.gradle文件中添加如下依赖:

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

为了方便操作GreenDao数据库,我们还需要对其进行封装。首先,我们创建一个实体对象:

package com.yufulife.xj.model;

import com.yufulife.xj.bean.CameraTakeBean;
import com.yufulife.xj.bean.JoinTakeBean;
import com.yufulife.xj.bean.ListSubCachedBeanConverter;

import org.greenrobot.greendao.annotation.Convert;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Unique;

import java.util.HashMap;
import java.util.List;
@Entity
public class People {
    //不能用int
    @Id(autoincrement = true)
    private Long id;


    //巡检编号
    @Unique
    private String inspection_id="";


    private String content="";

    @Convert(converter = ListSubCachedBeanConverter.class, columnType = String.class)
    private List<JoinTakeBean> mImgTT;

    @Generated(hash = 574353758)
    public People(Long id, String inspection_id, String content, List<JoinTakeBean> mImgTT) {
        this.id = id;
        this.inspection_id = inspection_id;
        this.content = content;
        this.mImgTT = mImgTT;
    }

    @Generated(hash = 1406030881)
    public People() {
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getInspection_id() {
        return this.inspection_id;
    }

    public void setInspection_id(String inspection_id) {
        this.inspection_id = inspection_id;
    }

    public String getContent() {
        return this.content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public List<JoinTakeBean> getMImgTT() {
        return this.mImgTT;
    }

    public void setMImgTT(List<JoinTakeBean> mImgTT) {
        this.mImgTT = mImgTT;
    } 
}

然后再封装一个统一的管理类:

package com.yufulife.xj.model;

import android.util.Log;

import com.google.gson.Gson;
import com.yufulife.xj.App;

import org.greenrobot.greendao.query.QueryBuilder;

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

 
public class FaceMsgDao {

    private static final String TAG = "ClockInfoDao";

    /**
     * 添加数据,如果有重复则覆盖
     *
     * @param people
     */
    public static void insertData(People people) {
        long l = App.getmDaoSession().getPeopleDao().insertOrReplace(people);
        System.out.println("liu::::::  "+l);
    }

    public static long getId(People people) {

        return App.getmDaoSession().getPeopleDao().getKey(people);
    }

    public static People getPeopleWhere(String Inspection_id){
        List<People> list = App.getmDaoSession().getPeopleDao().queryBuilder().where(PeopleDao.Properties.Inspection_id.eq(Inspection_id)).list();
        if (list!=null){
            if (list.size()>=1){
                return list.get(0);
            }
        }
        return null;
    }
    public static void deletePeopleWhere(String Inspection_id){
        App.getmDaoSession().getPeopleDao().queryBuilder().where(PeopleDao.Properties.Inspection_id.eq(Inspection_id)) .buildDelete().executeDeleteWithoutDetachingEntities();

    }
    /**
     * 更新数据
     *
     * @param people
     */
    public static void updateData(People people) {
        App.getmDaoSession().getPeopleDao().update(people);
    }
    /**
     * 查询全部数据
     */
    public static List<People> queryAll() {
        return App.getmDaoSession().getPeopleDao().loadAll();
    }

    public static void systemOutPeopleAll(){
        List<People> people = queryAll();
        for (People people1:people){
            System.out.println("liu::all  "+new Gson().toJson(people1));
        }
    }
    public static People getPeople(String war) {
        List<People> clockInfos = queryAll();
        if (clockInfos==null){
            System.out.println("liu:::  "+"沒有找到数据");
            return null;
        }

        for (People info : clockInfos) {
            if (info.getInspection_id() .equals(war) ) {
                return info;
            }
        }
        System.out.println("liu:::  "+"沒有找到数据");
        return null;
    }
}

需要注意的是,在使用GreenDao数据库之前,需要先在项目中初始化,比如。

 private static DaoSession mDaoSession;
    public static DaoSession getmDaoSession() {
        return mDaoSession;
    }
    /**
     * 初始化数据库
     */
    private void setDataBaseData() {
        //创建数据库shop.db"
        DaoMaster.DevOpenHelper mDaoMaster = new DaoMaster.DevOpenHelper(this, "inspection.db", null);
        //获取可写的数据库
        SQLiteDatabase writableDatabase = mDaoMaster.getWritableDatabase();
        //获取数据库对象
        DaoMaster daoMaster = new DaoMaster(writableDatabase);
        //获取Dao对象管理者
        mDaoSession = daoMaster.newSession();
    }

最后,只需要在业务中使用FaceMsgDao操作数据即可。

到此这篇关于Android集成GreenDao数据库的文章就介绍到这了,更多相关Android GreenDao数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Android组件化工具ARouter使用方法详细分析

    Android组件化工具ARouter使用方法详细分析

    这篇文章主要介绍了Android组件化工具ARouter使用方法,组件化项目存在各个模块之间耦合,通信麻烦的问题,为了解决这个问题,阿里巴巴的开发者就搞出了Arouter这个框架,以解决上述问题
    2022-10-10
  • Android GridView实现横向列表水平滚动

    Android GridView实现横向列表水平滚动

    这篇文章主要为大家详细介绍了Android GridView实现横向列表水平滚动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 详解Android的OkHttp包编写异步HTTP请求调用的方法

    详解Android的OkHttp包编写异步HTTP请求调用的方法

    OkHttp支持Callback异步回调来实现线程的非阻塞,下面我们就来详解Android的OkHttp包编写异步HTTP请求调用的方法,需要的朋友可以参考下
    2016-07-07
  • Android亮度调节的几种实现方法

    Android亮度调节的几种实现方法

    本篇文章详细介绍了Android亮度调节的几种实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • Android onCreate( )方法详细介绍

    Android onCreate( )方法详细介绍

    本文主要介绍Android onCreate( )方法,做Android应用的朋友对onCreate()的方法并不陌生,在开发应用的时候大家应该注意什么呢,这里给大家详细说明
    2016-09-09
  • Android和PC端通过局域网文件同步

    Android和PC端通过局域网文件同步

    这篇文章主要为大家详细介绍了Android和PC端通过局域网文件同步的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • android使用gesturedetector手势识别示例分享

    android使用gesturedetector手势识别示例分享

    这篇文章主要介绍了android使用手势识别的方法,介绍了单击触摸屏触发的事件和双击事件的使用等方法,大家参考使用吧
    2014-01-01
  • Android 中ListView点击Item无响应问题的解决办法

    Android 中ListView点击Item无响应问题的解决办法

    如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,怎么解决呢?下面小编给大家分享下listview点击item无响应的解决办法
    2016-12-12
  • Android基于高德地图poi的仿微信获取位置功能实例代码

    Android基于高德地图poi的仿微信获取位置功能实例代码

    这篇文章主要介绍了Android基于高德地图poi的仿微信获取位置功能,当用户打开页面自动定位,同时搜索周边所有poi,点击搜索按钮输入关键字,获取关键字搜索结果,本文图文并茂给大家介绍的非常详细,需要的朋友参考下吧
    2017-12-12
  • Kotlin学习教程之协程Coroutine

    Kotlin学习教程之协程Coroutine

    这篇文章主要给大家介绍了关于Kotlin学习教程之协程Coroutine的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05

最新评论