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数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • GreenDao 3.2.0 的基本使用

    前言 Android开发中我们或多或少都会接触到数据库.Android中提供了一个占用内存极小的关系型数据库-SQLite.虽然Android系统中提供了许多操作SQLite的API,但是我们还是需要手动去编写SQL语句,这经常会出现一些莫名其妙的问题(

  • 安卓GreenDao框架一些进阶用法整理

    大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession.getUserDao().queryBuilder(). XXX. XXX. XXX. list(); 一般的查询语句会在中间xxx的位置加上各种判断和过滤的方法指令,除了最后的终结指令list()或unique()返回的是集合或业务对象,其他的都是返回QueryBuilder对象,大多数情况下XX

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

    数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换.目前,Android系统中提供了3种方式的数据持久化技术,即文件存储.SharedPreferences存储以及数据库存储.当然,除了这3种方式之外,你还可以将数据保存在手机的SD卡中,不过使用文件.Shared Preferences或数

  • Android studio 连接手机调试操作步骤

    最近正在研究AS在使用手机调试时遇到了一点问题始终找不到设备,在网上找了很多帖子说的都不太对路,下面根据我自己操作的实际经验,总结一下我的操作方法: 1.我假设你已经搞定了前面gradle和build(前面配置各种包的版本问题,也是很恶心的). 2.打开SDK  Manager,如下图图所示,有两种方法. 3.进入界面后如下图选择勾选"Google USB drive"点击"apply"进行安装.(我的已经安装完成). 4.还是在这个界面,选择自己手机的Androi

  • docker安装并持久化postgresql数据库的操作步骤

    安装docker步骤略过 1.拉取postgresql镜像 docker pull postgresql 2.创建本地卷,数据卷可以在容器之间共享和重用,默认会一直存在,即使容器被删除(docker volume inspect pgdata可查看数据卷的本地位置) docker volume create pgdata 3.启动容器 docker run --name postgres2 -e POSTGRES_PASSWORD=password -p 5432:5432 -v pgdata:

  • SQL Server数据库分离和附加数据库的操作步骤

    目录 1. 概述 2. 分离数据库 2.1 分离数据库的步骤 3. 附加数据库 3.1 附加数据的操作步骤 总结 1. 概述 若要将数据库移动或更改到同一计算机的不同 SQL Server 实例,分离和附加数据库会很有用:用户可以分离数据库的数据和事务日志文件,再将它们重新附加到同一或其他 SQL Server 实例中: 在 64 位和 32 为环境中,SQL Server 磁盘存储格式均相同,所以,能将 32 位环境中的数据库附加到 64 位环境中,反过来也行: 从运行在某个环境中的服务器实例

  • MyEclipse 配置SQL Server 2008数据库驱动操作步骤

    1.在环境变量中,在classpath下添加sqljdbc.jar的路径(可直接复制sqljdbc.jar到jdk目录下) 2.设置SQLEXPRESS服务器,启动TCP/IP服务(若已开启跳过此步),重启服务器 3.在MyEclipse中,Window --> Preferences --> Java --> Installed JRES 点击Edit,进入之后添加现有jar,选择之前的sqljdbc.jar 4.配置完成,在新建一个web工程的时候会自动添加此数据库连接 5.选择一个

  • android studio集成极光推送的操作步骤

    之前使用的是小米推送,感觉还不错,集成简单,这次使用极光推送,看文档,很多用不到的东西看的好乱,所以这次记录: 第一.在极光配置信息,我是因为iso先创建应用了,我直接配置自己的信息就行,就填写一个包名. 第二.build.gradle文件的配置: android { ...... defaultConfig { ........ manifestPlaceholders = [ JPUSH_PKGNAME : "应用包名",//JPush上注册的包名 JPUSH_APPKEY : &

  • Android如何通过命令行操作Sqlite3数据库的方法

    1.首先,找到 Android SDK 在本机中的位置,如果不知道,可以通过在 Android Studio 找到,如下: 2.其次,通过 cmd 打开 windows 命令行窗口,如果,SDK 所在目录就在C盘下,可以直接通过 cd 命令挂载至 SDK 下的 platform-tools 目录,如下: cd C:\Users\wyj\AppData\Local\Android\Sdk\platform-tools 如果在其他盘(如 D 盘),需要先转到该盘: 然后再使用 cd 命令转到对应的位

  • ASP.NET中操作数据库的基本步骤分享

    1.ASP.NET操作数据库的基本步骤: ASP.NET数据操作常用方法: a. ExecuteReader() 返回的是一个SqlDataReader对象或OleDbDataReader对象,每次返回或操作指引一个记录保存在服务器的内存中. 相对 DataSet而言,具体较快的访问能力,通常用来进行查询操作. b.ExecuteNonQuery() c.ExecuteScalar()返回的是Object类型.如果执行的是SELECT,则返回结果是查询后的第一行第一列 返回数据库中影响的行数,进

  • Android ADT 离线下载操作步骤

    Android ADT 离线下载操作步骤 网上很多的Android在IDE eclipse的开发环境教程,ADT的就安装肯定也在里面啦 ADT的安装都是一个在线安装地址 https://dl-ssl.google.com/android/eclipse/ 但是发现是这种在线安装方法不好,麻烦,时间长,所以都去找离线安装包啦,根据关键词,你可以找到ADT 12的zip下载地址: http://dl.google.com/android/ADT-12.0.0.zip 但是我的eclipse 是最新版

  • Android中数据库常见操作实例分析

    本文实例讲述了Android中数据库常见操作.分享给大家供大家参考,具体如下: android中数据库操作是非常常见了,我们会经常用到,操作的方法也有很多种形式,这里我就把最常见的两种形式记录下来了,以备以后用到方便查看.我就不写注释和解释了,因为android数据库的操作和其它数据库操作本质上都是一样的,大同小异.需要的一些基本解释都在代码中,直接上代码了. 简单的代码文件目录: 首先这个类是数据库帮助类,DBHelper.java,代码如下: package net.loonggg.db;

随机推荐