1. 程式人生 > >Android Studio配置GreenDAO 3.2.0和使用方法

Android Studio配置GreenDAO 3.2.0和使用方法

我相信,在平時的開發過程中,大家一定會或多或少地接觸到SQLite。然而在使用它時,我們往往需要做許多額外的工作,像編寫SQL語句與解析查詢結果等。所以,適用於Android ORM框架也就孕育而生了,現在市面上主流的框架有OrmLite、SugarORM、Active Android、Realm與GreenDAO。今天主要來講一下GreenDAO 3.0G後的版本是怎麼在Android Studio上配置的。
簡單的講,GreenDAO是一個將物件對映到SQLite資料庫中的輕量且快速的ORM解決方案。(greenDAO is a light & fast ORM solution that maps objects to SQLite databases.) 。


Android ORM 框架之 greenDAO 使用心得

一、配置方法

1.直接開始配置,首先找到這個Library,如下圖:


2. 找到相應Module的build.gradle檔案,新增的下面的內容:


說明:第三步配置的是生成的資料庫操作模板程式碼的路徑。

3.找到Project的build.gradle檔案,新增下面的內容:


至此 配置就完成了,下來就開始生成資料庫並使用。

GreenDAO 3.0之前的配置方式可以這裡檢視。

二、生成資料庫操作DAO程式碼

1.在專案中新建一個表字段的實體類,不需要自己寫get和set方法,在生成表的時候會自動生成。不要忘了在類名上標記@Entity註解如圖: 


2.選擇build ——Make Project 一切順利的話則會在包名下生成資料庫的操作類,如下圖:


三、使用方法

資料庫的操作包括增刪改改查,方法如下:

package com.jackie.greendao;

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

import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText mName, mAge;
    private Button mAdd;
    private ListView mListView;

    private DaoMaster.DevOpenHelper mDevOpenHelper;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    private PersonDao mPersonDao;

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

        initView();
        initEvent();

        openDb();
    }

    private void initView() {
        mName = (EditText) findViewById(R.id.name);
        mAge = (EditText) findViewById(R.id.age);
        mAdd = (Button) findViewById(R.id.add);
        mListView = (ListView) findViewById(R.id.list_view);
    }


    private void initEvent() {
        mAdd.setOnClickListener(this);
    }

    private void openDb() {
        mDevOpenHelper = new DaoMaster.DevOpenHelper(this, "person.db", null);
        mDaoMaster = new DaoMaster(mDevOpenHelper.getWritableDb());
        mDaoSession = mDaoMaster.newSession();
        mPersonDao = mDaoSession.getPersonDao();
    }

    //插入
    public void insert() {
        Person person = new Person(Long.valueOf(1), mName.getText().toString(), 
                Integer.parseInt(mAge.getText().toString()));
        mPersonDao.insert(person);

        mName.setText("");
        mAge.setText("");
    }

    public void delete(Person person) {
        mPersonDao.delete(person);
    }

    //更新
    public void update(Person person) {
        mPersonDao.insertOrReplace(person);
    }

    //查詢
    public void query() {
        List<Person> persons = mPersonDao.queryBuilder().list();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.add:
                insert();
                break;
        }
    }
}

四、查詢功能


如果需要在控制檯檢視GreenDao是怎麼拼裝SQL語句的,在OnCreate()方法中開啟下面的開關:


五、條件查詢

    //查詢所有資料
    public void queryAll() {
        List<Person> persons = mPersonDao.queryBuilder().list();
    }

    //eq: equal 精確查詢  名字等於jackie
    public void queryEq() {
        Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.eq("jackie")).unique();
    }

    //notEq: not equal 精確查詢  名字不等於jackie
    public void queryNotEq() {
        Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.notEq("jackie")).unique();
    }

    //like  模糊查詢  名字以jackie開頭
    public void queryLike() {
        Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie")).unique();
        //萬用字元
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).list();
    }

    //between 區間查詢 年齡在20到30之間
    public void queryBetween() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.between(20, 30)).list();
    }

    //gt: greater than 半開區間查詢,年齡大於18
    public void queryGt() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.gt(18)).list();
    }

    //ge: greater equal 半封閉區間查詢,年齡大於或者等於18
    public void queryGe() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.ge(18)).list();
    }

    //lt: less than 半開區間查詢,年齡小於18
    public void queryLt() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.lt(18)).list();
    }

    //le: less equal 半封閉區間查詢,年齡小於或者等於18
    public void queryLe() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.le(18)).list();
    }

    //名字以jackie開頭,年齡升序排序
    public void queryLikeAsc() {
        //萬用字元
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).orderAsc(PersonDao.Properties.Age).list();
    }

    //名字以jackie開頭,年齡降序排序
    public void queryLikeDesc() {
        List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).orderDesc(PersonDao.Properties.Age).list();
    }
當上述查詢滿足不了業務邏輯時,可以自定義查詢語句:

六、多執行緒查詢

首先來看錯誤的方法:


錯誤截圖:


從上面可以看出,只能在建立Query物件的執行緒中呼叫查詢方法!

解決方法:


七、1對1查詢


相關推薦

Android Studio配置GreenDAO 3.2.0使用方法

我相信,在平時的開發過程中,大家一定會或多或少地接觸到SQLite。然而在使用它時,我們往往需要做許多額外的工作,像編寫SQL語句與解析查詢結果等。所以,適用於Android ORM框架也就孕育而生了,現在市面上主流的框架有OrmLite、SugarORM、Active An

Android Studio升級到3.2後部分第三方庫引入報紅

Android Studio升級到3.2後引入的第三方庫會出現報紅的現象,如圖: 雖然不影響編譯,但是這樣總歸是不爽, 原因:原因是我們的build.gradle中的dependencies--classpath版本太低如: classpath 'com.android.too

Could not find com.android.tools.build:aapt2:3.2.0-4818971.

Could not find com.android.tools.build:aapt2:3.2.0-4818971. Searched in the following locations:     file:/G:/workspace/android/adt-bun

GreenDao 3.2.0使用教程

public class GreenDaoManager {     private DaoMaster mDaoMaster;     private DaoSession mDaoSession;     private static volatile GreenDaoManager mInstance

Ubuntu16.04的Opencv原始碼安裝3.2.0 3.0.0-alpha詳細安裝教程

教程1: Opencv3.0.0-alpha在ubuntu16.04的安裝 # step 1 # 安裝依賴 (太多了,自己相應替換) sudo apt-get -y install libopencv-dev build-essential cmake

Android Studio Could not GET gradle-3.2.0.pom (安卓包配置相關問題)

could 9.png too spa not pom .com sharp 安卓 安卓出現的錯誤如下 Could not GET ‘https://dl.google.com/dl/android/maven2/com/android/tools/build/gradl

Android Studio 3.2.0安裝

1、下載地址: http://www.android-studio.org/ 預設是64位的,如果是要32位的,從“選擇其他平臺“中找到Windows (32-bit) 2、開啟安裝包一路點選“Next”進行安裝,安裝路徑預設是C盤目錄,建議不要更改。 3、開啟

Android Studio升級到3.0的打包配置

以前在build.gradle檔案中經常有這樣的配置: 1. applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile =

CentOS 7.x下部署配置zabbix 3.2.x監控工具

centos zabbix 監控一.安裝zabbix服務端1.下載官方yum源:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm2.安裝zabbix服務端(會自動安裝http

vs2015+opencv-3.2.0-vc14配置

over comm lan tar ros blank num important ack 用的VS2015免費的community社區版,功能足矣。 很早就有配置opencv249,原本覺得低版本的穩定,一直沒有配成功過,測試總是報錯 出現error LINK:無法打開文

Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError

nvi mpi ogl end 其他 註意 .com ner 功能 Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError 這個問題折騰了2個小時,最後解決了,Stack Overflow 上也有一次類似的問題,但是

Ubuntu 16.04下為Android編譯OpenCV 3.2.0 Manager

由於 ica 如何 setting -i add 標記 roi stripe http://johnhany.net/2016/07/build-opencv-manager-for-android-on-ubuntu/ 最近想在Android上嘗試一下SIFT和SU

JDK1.8Spring 3.2.0 的坑

cal bean catalina spa refresh r.java HA inter 項目 上午 org.apache.catalina.core.StandardContext listenerStart嚴重: Exception sending context

Android studio 升級到3.0後各種報錯解決方法

   最近把AS升級到3.2.1後老工程出現了一系列問題 總的來說, 不要隨便用最新的東西, SDK也好,AS也好,對老工程都不友好, 要等其他人躺坑躺的差不多再搞 我是先把gradle直接升級到了5.0, AS升級到了3.2.1 , SDK升到了28, 然後就

[環境配置]Ubuntu 16.04 原始碼編譯安裝OpenCV-3.2.0+OpenCV_contrib-3.2.0及產生的問題

1.OpenCV-3.2.0+OpenCV_contrib-3.2.0編譯安裝過程 1)下載官方要求的依賴包 GCC 4.4.x or later CMake 2.6 or higher Git GTK+2.x or higher, including headers (libgtk2.

android studio升級到3.0.1後apt報錯解決

1.現象描述 原來專案在Android studio 2.3一切正常,升級3.0之後報如下錯誤: Error:Cannot choose between the following configurations of project :android_sdk: - d

Android Studio 升級到3.0後出現編譯錯誤Error:Cannot choose between the following configurations of project

前段時間將Android Studio 升級到3.0後,原本一切正常的專案出現編譯錯誤 Error:Cannot choose between the following configurations of project :**:  - debugApiElements 

Windows +Visual Studio 2012+ OpenCV 3.2安裝配置教程

Windows +VS 2012+ OpenCV 3.2安裝配置教程 一、安裝環境 系統:Window 7 旗艦版 64位作業系統 OpenCV 3.2 官網:OpenCV 3.2 IDE:Microsoft Visual Studio 2012 二、安裝步驟

Redis-3.2.0叢集配置(redis cluster)

目錄 目錄 1 1. 前言 2 1. 前言 2. 部署計劃 依據官網介紹,部署6個redis節點,為3主3從。3臺物理機每臺都建立2個redis節點: 服務埠 IP地址 配置

Redisson 3.10.0 2.15.0 釋出,Redis 客戶端

   Redisson 3.10.0 和 2.15.0 已釋出,Redisson 是架設在 Redis 基礎上的一個 Java 駐記憶體資料網格 (In-Memory Data Grid) 。 Redisson 在基於 NIO 的 Netty 框架上,充分利用了 Re