国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 數(shù)據(jù)庫(kù)之GreenDAO

這篇具有很好參考價(jià)值的文章主要介紹了Android 數(shù)據(jù)庫(kù)之GreenDAO。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

GreenDAO 是一款開源的面向 Android 的輕便、快捷的 ORM 框架,將 Java 對(duì)象映射到 SQLite 數(shù)據(jù)庫(kù)中,我們操作數(shù)據(jù)庫(kù)的時(shí)候,不再需要編寫復(fù)雜的 SQL語句, 在性能方面,greenDAO 針對(duì) Android 進(jìn)行了高度優(yōu)化,最小的內(nèi)存開銷 、依賴體積小 同時(shí)還是支持 數(shù)據(jù)庫(kù)加密。

greenDAO 官網(wǎng)地址:greenDAO: Android ORM for your SQLite database - Open Source by greenrobot

greenDAO GitCode 源碼地址:https://github.com/greenrobot/greenDAO

GreenDao 特征

??? 1、支持 protocol buffer(protobuf) 協(xié)議
??? GreenDao 支持 protocol buffer(protobuf) 協(xié)議數(shù)據(jù)的直接存儲(chǔ),如果你通過 protobuf 協(xié)議與服務(wù)器交互,將不需要任何的映射
??? 2、代碼生成
??? greenDAO 會(huì)根據(jù)配置信息自動(dòng)生成核心管理類以及 DAO 對(duì)象
??? 3、性能
??? 所有 ORM 數(shù)據(jù)庫(kù)的,greenDAO 是最快的,greenDAO 不作性能方面任何妥協(xié)

核心類介紹
1、DaoMaster:

使用 greenDAO 的入口點(diǎn)。DaoMaster 負(fù)責(zé)管理數(shù)據(jù)庫(kù)對(duì)象(SQLiteDatabase)和 DAO 類(對(duì)象),我們可以通過它內(nèi)部類 OpenHelper 和 DevOpenHelper SQLiteOpenHelper 創(chuàng)建不同模式的 SQLite 數(shù)據(jù)庫(kù)。
2、DaoSession :

管理指定模式下的所有 DAO 對(duì)象,DaoSession 提供了一些通用的持久性方法比如插入、負(fù)載、更新和刪除實(shí)體。
3、XxxDAO :

對(duì)于每個(gè)實(shí)體類, greenDAO 都會(huì)生成一個(gè)與之對(duì)應(yīng) DAO 對(duì)象,如:User 實(shí)體,則會(huì)生成一個(gè) UserDao 類
4、Entities:

可持久化對(duì)象。通常,實(shí)體對(duì)象代表一個(gè)數(shù)據(jù)庫(kù)行,使用標(biāo)準(zhǔn) Java 屬性(如一個(gè) POJO 或 JavaBean )

集成GreenDao

1、build.gradle(Module:app)中添加配置與依賴

(1)

apply plugin: 'org.greenrobot.greendao' //添加greendao apply plugin
android {
    *
    *
}

(2)

android {
    *
    *

 // greendao配置
    greendao {
        //數(shù)據(jù)庫(kù)版本號(hào),升級(jí)時(shí)修改
        schemaVersion 1
        //生成的DAO,DaoMaster和DaoSession的包路徑。默認(rèn)與表實(shí)體所在的包路徑相同
        daoPackage 'com.chy.greendao'
        //生成源文件的路徑。默認(rèn)源文件目錄是在build目錄中的(build/generated/source/greendao)
        targetGenDir 'src/main/java'
    }

}

(3)

//引入GreenDao數(shù)據(jù)庫(kù),存儲(chǔ)數(shù)據(jù)
implementation 'org.greenrobot:greendao:3.3.0' // add library
//Gson依賴
implementation 'com.google.code.gson:gson:2.8.5'

2、build.gradle(Project:xxx)中添加配置

// 添加插件 更好支持GreenDao
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'

創(chuàng)建Myapplication類:

public class Myapplication extends Application {

    public static DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        initDb();
    }

    /**
     * 數(shù)據(jù)庫(kù)初始化
     * */
    public void initDb () {
//        獲取SQLiteOpenHelper對(duì)象devOpenHelper
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "mydb.db");
//        獲取SQLiteDatabase
        SQLiteDatabase db = devOpenHelper.getWritableDatabase();
//        加密數(shù)據(jù)庫(kù)(這句話無法運(yùn)行)
        //Database database = devOpenHelper.getEncryptedWritableDb("12345");
        //DaoMaster daoMaster = new DaoMaster(database);
//        創(chuàng)建DaoMaster實(shí)例
//        DaoMaster保存數(shù)據(jù)庫(kù)對(duì)象(SQLiteDatabase)并管理特定模式的Dao類(而不是對(duì)象)。
//        它具有靜態(tài)方法來創(chuàng)建表或?qū)⑺鼈儎h除。
//        其內(nèi)部類OpenHelper和DevOpenHelper是在SQLite數(shù)據(jù)庫(kù)中創(chuàng)建模式的SQLiteOpenHelper實(shí)現(xiàn)。
         DaoMaster daoMaster = new DaoMaster(db);
//        管理特定模式的所有可用Dao對(duì)象
        daoSession = daoMaster.newSession();
    }



}

?在AndroidManifest.xml添加自定義的Myapplication

Android 數(shù)據(jù)庫(kù)之GreenDAO,android,數(shù)據(jù)庫(kù)

創(chuàng)建Entity

package com.chy.table;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;

@Entity(nameInDb = "patrol_table")
public class PatrolTable {

    /**
     * 主鍵 Long型,可以通過@Id(autoincrement = true)設(shè)置自增長(zhǎng)。
     * 通過這個(gè)注解標(biāo)記的字段必須是Long,數(shù)據(jù)庫(kù)中表示它就是主鍵,并且默認(rèn)是自增的。
     */
    @Id(autoincrement = true)
    private Long id;

    /**
     * Unique 屬性給數(shù)據(jù)庫(kù)的列添加了一個(gè)唯一性限制。注意,SQLite也會(huì)隱式地為它創(chuàng)建一個(gè)索引。
     * Property :屬性指定數(shù)據(jù)庫(kù)的字段名稱。默認(rèn)是駝峰轉(zhuǎn)成大寫的下劃線隔開的名稱,比如:UserAge 轉(zhuǎn)成 USER_AGE
     */
    // @Unique
    @Property(nameInDb = "patroler_massif")
    private String patrolerMassif;// 巡查地塊
    @Property(nameInDb = "patroler_person")
    private String patrolerPerson;// 巡查人員
    @Property(nameInDb = "patroler_time")
    private String patrolerTime;// 巡查時(shí)間
    @Generated(hash = 2022133330)
    public PatrolTable(Long id, String patrolerMassif, String patrolerPerson,
            String patrolerTime) {
        this.id = id;
        this.patrolerMassif = patrolerMassif;
        this.patrolerPerson = patrolerPerson;
        this.patrolerTime = patrolerTime;
    }
    @Generated(hash = 824963258)
    public PatrolTable() {
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getPatrolerMassif() {
        return this.patrolerMassif;
    }
    public void setPatrolerMassif(String patrolerMassif) {
        this.patrolerMassif = patrolerMassif;
    }
    public String getPatrolerPerson() {
        return this.patrolerPerson;
    }
    public void setPatrolerPerson(String patrolerPerson) {
        this.patrolerPerson = patrolerPerson;
    }
    public String getPatrolerTime() {
        return this.patrolerTime;
    }
    public void setPatrolerTime(String patrolerTime) {
        this.patrolerTime = patrolerTime;
    }

}

創(chuàng)建完entity,點(diǎn)擊Make Project 如圖所示:

Android 數(shù)據(jù)庫(kù)之GreenDAO,android,數(shù)據(jù)庫(kù)

如果配置正確,會(huì)在配置的包目錄下自動(dòng)會(huì)生成DaoMaster,DaoSession 和XXXDao 類 。

?Android 數(shù)據(jù)庫(kù)之GreenDAO,android,數(shù)據(jù)庫(kù)

定義GreenDaoManager類:

/**
 * 自定義Manager
 * */
public class GreenDaoManager {

    private Context mContext;
    private PatrolTableDao mPatrolTableDao;




    // 構(gòu)造函數(shù)
    private GreenDaoManager(Context context){
        mContext = context;
        mPatrolTableDao = Myapplication.daoSession.getPatrolTableDao();
    }

    /**
     * 單例
     * */
    private static GreenDaoManager INSTANCE;

    public static GreenDaoManager getInstance(Context context){
        if (INSTANCE == null){
            INSTANCE = new GreenDaoManager(context);
        }
        return INSTANCE;
    }


    //添加一條數(shù)據(jù)到數(shù)據(jù)庫(kù)
    public long insertPatrolTable (PatrolTable patrolTable) {

        long flag = mPatrolTableDao.insertOrReplace(patrolTable);

       return flag;
    }

    // 批量插入數(shù)據(jù)
    public void insertPatrolTables(List<PatrolTable> patrolTableList){
        mPatrolTableDao.insertInTx(patrolTableList);
    }

    //查詢所有
    public List<PatrolTable> queryPatrolTable(){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder()
                .orderAsc(PatrolTableDao.Properties.Id);
        return query.list();
    }

    //查詢地塊名稱
    public List<PatrolTable> queryMassif(String massifName){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder();
        query = query.where(PatrolTableDao.Properties.PatrolerMassif.eq(massifName))
                .orderAsc(PatrolTableDao.Properties.Id);;
        return query.list();


    }

    //查詢巡查人員
    public List<PatrolTable> queryPerson(String personName){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder();
        query = query.where(PatrolTableDao.Properties.PatrolerPerson.eq(personName))
                .orderAsc(PatrolTableDao.Properties.Id);
        return query.list();
    }


    //刪除指定數(shù)據(jù)
    public void deletePatrolTable(PatrolTable patrolTable){
        mPatrolTableDao.delete(patrolTable);
    }

    //更新數(shù)據(jù)
    public void updatePatrolTable(PatrolTable patrolTable){
        mPatrolTableDao.update(patrolTable);
    }


}

使用:文章來源地址http://www.zghlxwxcb.cn/news/detail-645096.html


    private void initDB(){
        GreenDaoManager instance = GreenDaoManager.getInstance(this);
        //創(chuàng)建數(shù)據(jù)
        PatrolTable patrolTable = new PatrolTable();
        patrolTable.setPatrolerPerson("張三");
        patrolTable.setPatrolerMassif("南湖公園");
        patrolTable.setPatrolerTime("2023-8-8 11:21");

        /** 添加數(shù)據(jù) **/
        long flag = instance.insertPatrolTable(patrolTable);
        System.out.println(flag);


        /** 獲取數(shù)據(jù) **/
        List<PatrolTable> patrolTables = instance.queryMassif(patrolTable.getPatrolerMassif());
        Gson gson = new Gson();
        String json = gson.toJson(patrolTables);
        System.out.println("JSON"+json);

        /** 修改數(shù)據(jù) **/
        PatrolTable updatePatrolTable = new PatrolTable();
        updatePatrolTable.setId(1l);
        updatePatrolTable.setPatrolerPerson("李四");
        updatePatrolTable.setPatrolerMassif("西湖公園");
        updatePatrolTable.setPatrolerTime("2023-8-10 11:21");
        instance.updatePatrolTable(updatePatrolTable);

        /**
         * 獲取所有數(shù)據(jù)
         * */
        List<PatrolTable> allPatrolTables = instance.queryPatrolTable();
        Gson gson2 = new Gson();
        String json2 = gson2.toJson(allPatrolTables);
        System.out.println("JSON2"+json2);

    }

到了這里,關(guān)于Android 數(shù)據(jù)庫(kù)之GreenDAO的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android數(shù)據(jù)庫(kù)查詢

    1.查詢圖片 2.查詢視頻 3.查詢音頻 4.根據(jù)文件路徑返回Uri (1) (2)備注代碼里返回的視頻的Uri,要返回音頻或者圖片的Uri要在查詢和獲取Uri里改為相應(yīng)的URI查詢。 5.查詢特定后綴名的文件(\\\"pdf\\\", \\\"txt\\\", \\\"doc\\\", \\\"docx\\\", \\\"xlsx\\\", \\\"xls\\\", \\\"ppt\\\", \\\"pptx\\\", \\\"epub\\\") (1)根據(jù)后綴名來查詢(存在的

    2024年02月16日
    瀏覽(17)
  • Android studio 連接SQLite數(shù)據(jù)庫(kù) +創(chuàng)建數(shù)據(jù)庫(kù)+創(chuàng)建數(shù)據(jù)庫(kù)表

    Android studio 連接SQLite數(shù)據(jù)庫(kù) +創(chuàng)建數(shù)據(jù)庫(kù)+創(chuàng)建數(shù)據(jù)庫(kù)表

    Android studio 之?dāng)?shù)據(jù)庫(kù)的使用 連接創(chuàng)建SQLite 大家好,歡迎來到寒依。 相信看啦我的教程 當(dāng)老師問你在學(xué)習(xí)Android studio 數(shù)據(jù)庫(kù)使用過程中遇到什么困難,分享一下你的感悟和解決方法 的時(shí)候,你可以直接大膽的說出來: “老師我沒有遇到問題,看啦寒依的教程 暢行無阻” 我

    2024年02月02日
    瀏覽(35)
  • Android studio引入外部SQLite數(shù)據(jù)庫(kù),獲取數(shù)據(jù)庫(kù)列表數(shù)據(jù)

    Android studio引入外部SQLite數(shù)據(jù)庫(kù),獲取數(shù)據(jù)庫(kù)列表數(shù)據(jù)

    準(zhǔn)備好Android studio和一個(gè)創(chuàng)建管理數(shù)據(jù)庫(kù)的軟件,推薦SQLite Expert Professional或者Navicat Premium。這里以SQLite Expert Professional為例。 1.穿件sqlite數(shù)據(jù)庫(kù),按照自己的項(xiàng)目要求定義數(shù)據(jù)庫(kù)和相應(yīng)的數(shù)據(jù)表 1.在main目錄下創(chuàng)建assets文件,將準(zhǔn)備好的sqlite數(shù)據(jù)庫(kù)文件放入這個(gè)目錄下 解釋:

    2024年02月08日
    瀏覽(21)
  • Android 數(shù)據(jù)庫(kù)增刪改查

    Android 數(shù)據(jù)庫(kù)增刪改查

    1、activity_main.xml 頁面布局 代碼 2、MainActivity.java 通過點(diǎn)擊不同的按鈕,進(jìn)行不同的增刪改查操作 3、UserDao.java 包含對(duì)數(shù)據(jù)庫(kù)的增刪改查方法 4、User.java 實(shí)體類對(duì)應(yīng)著user表中的字段 5、SQLiteOpenHelper.java 創(chuàng)建表,更新表方法

    2023年04月08日
    瀏覽(17)
  • 【Android】Room數(shù)據(jù)庫(kù)的使用

    Room 是在 SQLite 的基礎(chǔ)上推出的 Android 庫(kù),它是 Google 官方對(duì)數(shù)據(jù)庫(kù)操作的推薦方式。使用 Room 可以更方便、高效地操作 SQLite 數(shù)據(jù)庫(kù)。 添加依賴 在使用 Room 之前,需要在項(xiàng)目中添加 Room 相關(guān)的依賴。在 build.gradle 文件中添加以下依賴: 在上面的依賴中,我們添加了 room-runti

    2024年02月09日
    瀏覽(25)
  • Android之SQLite數(shù)據(jù)庫(kù)使用

    Android之SQLite數(shù)據(jù)庫(kù)使用

    SQLite是Android系統(tǒng)集成的一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù)。 Android提供了 SQLiteDatabase代表一個(gè)數(shù)據(jù)庫(kù) (底層就是一個(gè)數(shù)據(jù)庫(kù)文件),一旦應(yīng)用程序獲得了代表指定數(shù)據(jù)庫(kù)的SQLiteDatabase對(duì)象,接下來可通過SQLiteDatabase對(duì)象來管理、操作數(shù)據(jù)庫(kù)了。 Android為了讓我們能夠更加方便地管理數(shù)據(jù)庫(kù),

    2024年02月16日
    瀏覽(31)
  • Android :數(shù)據(jù)庫(kù)管理器SQLiteDataBase

    一、前言: 簡(jiǎn)單使用SQLiteDataBase。界面上有兩個(gè)按鈕,點(diǎn)擊創(chuàng)建數(shù)據(jù)庫(kù)下面會(huì)顯示數(shù)據(jù)庫(kù)創(chuàng)建的路徑。刪除數(shù)據(jù)庫(kù),下方會(huì)顯示是否刪除成功。 二、上代碼 界面布局 與之對(duì)應(yīng)的Activity:DataBaseActivity

    2024年02月12日
    瀏覽(9)
  • Android之 常用數(shù)據(jù)庫(kù)框架整理

    Android之 常用數(shù)據(jù)庫(kù)框架整理

    一 簡(jiǎn)介 1.1 上節(jié)說了關(guān)系型數(shù)據(jù)庫(kù)有以下幾種: Oracle、Microsoft SQL Server、Microsoft Access、MySQL、SQLite 1.2 各自的領(lǐng)域也不一樣 java,C#,php等用Oracle,Microsoft SQL Server,MySQL比較多。 移動(dòng)端Android,IOS等用SQLite比較多 1.3?SQLite是一種輕量型數(shù)據(jù)庫(kù),有以下優(yōu)點(diǎn): 不需要一個(gè)單獨(dú)的服

    2024年02月14日
    瀏覽(18)
  • Android Studio 學(xué)習(xí)記錄-數(shù)據(jù)庫(kù)

    Android Studio 學(xué)習(xí)記錄-數(shù)據(jù)庫(kù)

    目錄 SQL的基本語法 1.數(shù)據(jù)定義語言 2.數(shù)據(jù)操縱語言 數(shù)據(jù)庫(kù)管理器 SQLiteDatabase 數(shù)據(jù)庫(kù)幫助器 SQLiteOpenHelper 優(yōu)化記住密碼功能 ????????本文介紹Android的數(shù)據(jù)庫(kù)存儲(chǔ)方式-SQLite的使用方法,包括:SQLite用到了哪些SQL語法,如何使用數(shù)據(jù)庫(kù)管理器操縱SQLite,如何使用數(shù)據(jù)庫(kù)幫助器

    2024年02月07日
    瀏覽(18)
  • Android 連接MySql數(shù)據(jù)庫(kù)步驟

    1.首先我們需要導(dǎo)入mysql驅(qū)動(dòng)jar包下載地址: ? 在android studio的build.gradle中插入 } 2、建立JDBCutils類 ? ?分析:jdbc:mysql://192.168.43.215:3306/user\\\",\\\"root\\\",\\\"1234\\\"語句 ? ?1、jdbc:mysql://基本格式 ? ?2、192.168.43.215你當(dāng)前連的網(wǎng)的Ipv4地址(可以在cmd命令窗口輸入ipconfig命令,找到你連的網(wǎng)(

    2024年02月05日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包