GreenDao的初次使用--號稱Android最快的關係型資料庫

来源:https://www.cnblogs.com/happy-warmth/archive/2019/03/10/10507925.html
-Advertisement-
Play Games

一、準備工作 1、項目build.gradle文件下的dependencies中引入插件: 2、在module的build.gradle文件下頂部依賴插件: 3、在module的build.gradle文件下的dependencies中引入依賴: 二、GreenDao的註解 1、實體@Entity註 ...


一、準備工作

1、項目build.gradle文件下的dependencies中引入插件:

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

2、在module的build.gradle文件下頂部依賴插件:

apply plugin: 'org.greenrobot.greendao'

3、在module的build.gradle文件下的dependencies中引入依賴:

compile 'org.greenrobot:greendao:3.2.0'

二、GreenDao的註解

1、實體@Entity註解:

  schema:告知GreenDao當前實體屬於哪個schema

  active:標記一個實體處於活動狀態,活動實體有更新、刪除和刷新方法

  nameInDb:在數據中使用的別名,預設使用的是實體的類名

  indexes:定義索引,可以跨越多個列

  createInDb:標記創建資料庫表

2、基礎屬性註解

  @Id :主鍵 Long型,可以通過@Id(autoincrement = true)設置自增長

  @Property:設置一個非預設關係映射所對應的列名,預設是的使用欄位名 舉例:@Property (nameInDb="name")

  @NotNul:設置資料庫表當前列不能為空

  @Transient :添加次標記之後不會生成資料庫表的列

3、索引註解

  @Index:使用@Index作為一個屬性來創建一個索引,通過name設置索引別名,也可以通過unique給索引添加約束

  @Unique:向資料庫列添加了一個唯一的約束

4、關係註解

  @ToOne:定義與另一個實體(一個實體對象)的關係

  @ToMany:定義與多個實體對象的關係

三、簡單使用----使用管理類DBManager,操作名稱為test_db的資料庫,完成資料庫中用戶實體類User的增刪改查等操作

1、創建實體用戶類User,使用GreenDao進行註解,ReBuild項目。

/**
 * <p>Description:
 */
@Entity
public class User {

    @Id(autoincrement = true)
    private Long id ;
    private String name ;
    private int age ;

    public User(String name,int age){
        this.name = name ;
        this.age = age ;
    }


    @Generated(hash = 1309193360)
    public User(Long id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    @Generated(hash = 586692638)
    public User() {
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return this.age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
View Code

2、創建管理類DBManager,完成對User的增刪改查方法

public class DBManager {

    private static DBManager instance ;
    private final static String dbName = "test_db";

    private Context mContext ;

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


    private DaoMaster.DevOpenHelper openHelper = null ;

    public static DBManager getInstance(Context context){
        if(instance == null){
            synchronized (DBManager.class){
                if(instance == null){
                    instance = new DBManager(context);
                }
            }
        }
        return instance ;
    }

    private SQLiteDatabase getWriteableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getWritableDatabase();
    }
    private SQLiteDatabase getRedadableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getReadableDatabase() ;
    }


    public void saveUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        //存入user對象
        userDao.save(user);

    }

    public void saveUsers(List<User> users){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.saveInTx(users);
    }

    public void delteUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.delete(user);
    }

    public void updateUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.update(user);
    }

    public List<User> queryUser(){
        DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        QueryBuilder<User> qb = userDao.queryBuilder();
        List<User> list = qb.list();
        return list ;
    }

    public List<User> queryUser(int age){
        DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        QueryBuilder<User> qb = userDao.queryBuilder();
        //添加查詢條件
        qb.where(UserDao.Properties.Age.eq(age));
        List<User> list = qb.list();
        return list ;
    }

}
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言: 今天,想裝個高版本一點的mysql試試,於是下載了一個mysql8的zip版本。 地址:https://dev.mysql.com/downloads/file/?id=484900 沒想到安裝的過程,竟然卡了半個下午和半個晚上,才走通,坑啊,順便記錄下。 一、順利的安裝步驟: 1、將mys ...
  • 創建/增加(create創建,alter欄位操作,insert插入) 創建資料庫 create database 資料庫名稱 charset=utf8; # 例: create database test charset=utf8; 創建數據表 Create table 數據表名稱( 欄位一 類型[ ...
  • 持久化存儲是將 Redis 存儲在記憶體中的數據存儲在硬碟中,實現數據的永久保存。我們都知道 Redis 是一個基於記憶體的 nosql 資料庫,記憶體存儲很容易造成數據的丟失,因為當伺服器關機等一些異常情況都會導致存儲在記憶體中的數據丟失。 ...
  • 筆記記錄自林曉斌(丁奇)老師的《MySQL實戰45講》 (本篇內圖片均來自丁奇老師的講解,如有侵權,請聯繫我刪除) 9) --普通索引和唯一索引,應該怎麼選擇? 假如你在維護一個市民系統,每個人都有唯一的身份證號,而且業務代碼也已經保證了不會寫入兩個相同的身份證號。如果需要按身份證號來查找,你可能會 ...
  • Oracle下載與Oracle安裝圖解(Oracle19c,Oracle18c,Oracle12c,Oracle11g) 1、Oracle下載(Oracle11g) oracle下載方法,請根據以下步驟與圖示來下載oracle11g版本: oracle11g下載第1步:打開oracle官方網站 or ...
  • MySQL下載與MySQL安裝圖解(MySQL5.7與MySQL8.0) 1、MySQL下載(MySQL8.0社區版) mysql下載方法,請根據風哥以下步驟與圖示來下載mysql8.0最新社區版本: mysql下載第1步:打開mysql官方網站 mysql下載第2步:downloads mysql ...
  • 例如規定只能在工作時間內更新Student表,可以定義如下觸發器,其中sysdate為系統當前時間 CREATE OR REPLACE TRIGGER secure_student BEFORE INSERT OR UPDATE OR DELETE ON studentBEGIN IF (TO_CH ...
  • 一、HBase表的基本結構 1.概述: 平時常見的MySQL、Oracle資料庫都是傳統型關係資料庫,它們都是按行查詢、按行存儲;而HBase為非關係型資料庫,它是按列存儲的的。 在HBase插入數據時,先輸入數據的格式為rowkey => info => column => value rowke ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...