1. 程式人生 > >xUtils3.0使用介紹:資料庫模組

xUtils3.0使用介紹:資料庫模組

步驟:
1. 建立資料表
2. DaoConfig 獲取資料庫的配置資訊
3. 獲取資料庫例項: x.getDb(daoConfig);
4. 資料庫的增刪改查

第一步,建立一張資料表

在這裡要強調的是,資料庫裡面表的建立的時間,只有在你對資料庫裡面的操作涉及到這張表的操作時,會先判斷當前的表是否存在,如果不存在,才會建立一張表,如果存在,才會進行相應的CRUD操作。

@Table(name = "person")
public class person {
    @Column(name = "id", isId = true, autoGen = true
) public int id; @Column(name = "name") public String name;// 姓名 @Column(name = "age") public int age;// 年齡 @Column(name = "sex") public String sex;// 性別 @Column(name = "salary") public String salary;// 工資 @Override public String toString() { return "person [id="
+ id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", salary=" + salary + "]"; } }

上表中包含了db相關Annotation:

@Check    check約束
  @Column   列名
  @Finder   一對多、多對一、多對多關係(見sample的Parent、Child中的使用)
  @Foreign  外來鍵
  @Id       主鍵,當為int型別時,預設自增。 非自增時,需要設定id的值
  @NoAutoIncrement
不自增 @NotNull 不為空 @Table 表名 @Transient 不寫入資料庫表結構 @Unique 唯一約束

第二步:DaoConfig 獲取資料庫的配置資訊

這個配置最好寫在工具類中,方便呼叫:

private static DaoConfig daoConfig;
    public static DaoConfig getDaoConfig(){
        if(daoConfig==null){
            daoConfig = new DbManager.DaoConfig()
            .setAllowTransaction(true)//設定允許開啟事務
             .setDbName("test.db")//建立資料庫的名稱
             // 不設定dbDir時, 預設儲存在app的私有目錄.
             .setDbDir(new File("/sdcard")) // "sdcard"的寫法並非最佳實踐, 這裡為了簡單, 先這樣寫了.
             .setDbVersion(1)//資料庫版本號
             .setDbOpenListener(new DbManager.DbOpenListener() {
                 @Override
                 public void onDbOpened(DbManager db) {
                     // 開啟WAL, 對寫入加速提升巨大
                     db.getDatabase().enableWriteAheadLogging();
                 }
             })
             .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                 @Override
                 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                     // TODO: ...
                     //db.addColumn(...);
                     // db.dropTable(...);
                     // ...
                     // or
                     // db.dropDb();
                 }
             });
        }
        return daoConfig;
    }

第三步:獲取資料庫例項

DaoConfig daoConfig = xUtils.getDaoConfig();
db = x.getDb(daoConfig);

第四部步:資料庫的增刪改查

通過DbManager這個類我們知道主要它做了以下幾件事情:

  1. .getDaoConfig 獲取資料庫的配置資訊
  2. getDatabase 獲取資料庫例項
  3. saveBindingId ;saveOrUpdate ; save 插入資料的3個方法(儲存資料)
  4. replace 只有存在唯一索引時才有用 慎重
  5. .delete操作的4種方法(刪除資料)
  6. update操作的2種方法(修改資料)
  7. find操作6種方法(查詢資料)
  8. dropTable 刪除表
  9. addColumn 新增一列
  10. dropDb 刪除資料庫

增:

try {
            List<person> list = new ArrayList<person>();
            for (int i = 0; i < 1; i++) {
                person person = new person();
                person.name = "wingli"+i;
                person.age = 18;
                person.salary = "1000元";
                person.sex = "男";
                list.add(person);
            }
            db.save(list);//儲存實體類或實體類的List到資料庫
//          db.saveOrUpdate(list);//儲存或更新實體類或實體類的List到資料庫, 根據id對應的資料是否存在
//          db.saveBindingId(list);儲存實體類或實體類的List到資料庫,如果該型別的id是自動生成的, 則儲存完後會給id賦值
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

查:

try {
            //1
            db.findById(person.class, 1);//通過主鍵的值來進行查詢表裡面的資料
            //2
            db.findFirst(person.class);//返回當前表裡面的第一條資料 
            //3
            List<person> findAll = db.findAll(person.class);//返回當前表裡面的所有資料 
            //4
//          db.findDbModelAll(new SqlInfo("select * from person where age > 25"));
            DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25"));
            model.getString("age");//model相當於遊標
            //5
             List<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用來進行一些特定條件的查詢 
             //6
             db.selector(person.class).where("age ",">","25").and("column2", "=","value2").and("column3", "!=","value3").findAll();//多重條件查詢

        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

try {
            //1
            db.delete(person.class);//該方法是刪除表中的全部資料
            //2
            db.deleteById(person.class, 12);//該方法主要是根據表的主鍵(id)進行單條記錄的刪除
            //3
            db.delete(person.class, WhereBuilder.b("age", ">","20"));//根據where語句的條件進行刪除操作 
            //4
            List<person> findAll = db.selector(person.class).expr("age > 20").findAll();
            db.delete(findAll);//根據實體bean進行對錶裡面的一條或多條資料進行刪除   
        } catch (DbException e) {
            e.printStackTrace();
        }

改:

try {
            List<Person> findAll = db.findAll(Person.class);
            for (Person person : findAll) {
                person.age = 1;
                person.salary = "qqqqq";
            }
            db.update(findAll, "age");//可以使物件、集合
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

新增一個欄位:

通常用在資料庫升級

db.addColumn(Person.class, "count");

相關推薦

xUtils3.0使用介紹資料庫模組

步驟: 1. 建立資料表 2. DaoConfig 獲取資料庫的配置資訊 3. 獲取資料庫例項: x.getDb(daoConfig); 4. 資料庫的增刪改查 第一步,建立一張資料表 在這裡要強調的是,資料庫裡面表的建立的時間,只

Android xUtils3原始碼解析之資料庫模組

本文已授權微信公眾號《非著名程式設計師》原創首發,轉載請務必註明出處。 xUtils3原始碼解析系列 配置資料庫 DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()

Spark 2.0介紹從RDD API遷移到DataSet API

RDD遷移到DataSet DataSet API將RDD和DataFrame兩者的優點整合起來,DataSet中的許多API模仿了RDD的API,雖然兩者的實現很不一樣。所以大多數呼叫RDD API編寫的程式可以很容易地遷移到DataSet API中,下面我

xUtils3.0使用介紹圖片載入模組

現在來介紹xUtils3.0的載入圖片功能,3.0之後加入了許多實用的工具,如圖片倒圓角,變圓園,變正方形,載入gif等等。。。 圖片載入模組 1,加在網路圖片 x.image().bind(imageView, url, imageOptions);

Kafka 0.11新功能介紹空消費組延遲rebalance

延時處理 max 詳細 方便 聲明 qrcode 狀態機 分享圖片 -c Kafka 0.11新功能介紹:空消費組延遲rebalance 在0.11之前的版本中,多個consumer實例加入到一個空消費組將導致多次的rebalance,這是由於每個consumer i

OAuth 2.0 介紹

tgz 表示 lencod 保護 瀏覽器中 服務器申請 orm 這一 打開 OAuth是一個關於授權(authorization)的開放網絡標準,在全世界得到廣泛應用,目前的版本是2.0版。 本文對OAuth 2.0的設計思路和運行流程,做一個簡明通俗的解釋,主要參考材料

C++從零開始區塊鏈P2P模組之簡單介紹一下原理

想徹底說明P2P的原理太麻煩了,而且這種東西網上一搜就是一大堆(雖然好多連結其實都是同一篇文章),這裡就不贅述了,只簡單說一下本例所用到的一些東西。 如果所有節點都在公網上,p2p通訊就非常容易,找臺搭橋伺服器,每個節點啟動的時候都向搭橋伺服器註冊自己,並獲取其他節點資訊,然後就可以節點間

oracle筆記資料庫初始化打不開,程序為0解決方案

用PL登入提示初始化打不開,程序為0,一方面原因為資料檔案有丟失情況或者誤刪除; 另一方面為控制檔案有誤,總之就是缺失或者錯誤造成的。 下面是一次解決此方案的過程: 啟動時報這個錯誤 ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案 ORA-

自動駕駛平臺Apollo 3.0閱讀手記perception模組之lane post processing

背景 之前寫過一篇雜文《自動駕駛平臺Apollo 2.5閱讀手記:perception模組之camera detector》,介紹到用於camera輸入的DNN模型不僅會輸出物體檢測結果,還會輸出車道線的語義分割結果。但要得到最終的車道線資訊,還要經過後處理。專

Kafka 0.11新版本釋出主要的功能變更介紹支援 EOS, 事務和冪等producer

Apache Kafka近日推出0.11版本。這是一個里程碑式的大版本,特別是Kafka從這個版本開始支援“exactly-once”語義(下稱EOS, exactly-once semantics

042資料庫操作相關軟體和包介紹

MySQL資料庫介紹:   在網站開發中,資料庫是網站的重要組成部分。只有提供資料庫,資料才能夠動態的展示,而不是在網頁中顯示一個靜態的頁面。資料庫有很多,比如有 SQL Server 、 Oracle 、 PostgreSQL 以及 MySQL 等等。 MySQL 由於價格實惠、簡單易用、不受平臺限制、靈

Django 2.0 專案配置檔案介紹

Django專案配置檔案為setting,如下: 其各部分內容含義如下: BASE_DIR:專案檔案路徑,專案建立之後自動設定,不需要改動。 SECRET_KEY:金鑰,專案建立之後自動設定,不需要改動。 DEBUG:供開發人員用,專案結束後,需要將其設定為False。

每日一python(5)json模組中的相關方法介紹

1、json.dumps()和json.loads()函式 說明: json.dumps()函式是將一個Python資料型別進行json格式的編碼(簡單理解,json.dumps()函式是將字典轉化為字串) json.loads()函式是將json格式資料轉換為字典

python常用模組介紹之一string模組

簡介:        string模組主要用於對字串進行操作。string裡的許多特性都已經移植到str和unicode物件的方法裡去了。下面主要討論下string模組的常用方法。 函式 1.        string.atof(s) 字串轉換成浮點型 string.a

資料庫頂級會議介紹VLDB、SIGMOD、ICDE

VLDB和另外兩大資料庫會議SIGMOD、ICDE構成了資料庫領域的三個頂級會議。VLDB (Very Large Data Base) 是資料庫研究人員,供應商,參與者,應用開發者,以及使用者一年一度的主要國際論壇。VLDB國際會議於1975在美國的弗雷明漢馬 (Fram

greendao3.0以上使用步驟(三)資料庫加密

引入資料庫 1、在專案的build.gradle中加入這些配置 // Top-level build file where you can add configuration options common to all sub-projects/

greendao3.0以上使用步驟(二)資料庫到底該怎麼升級

這一篇看看資料庫到底該怎麼升級呢?看我升級後的效果 沒有升級前的頁面顯示 沒有升級前的資料庫 升級後的頁面顯示 升級後的資料庫 看增加了一個NUM欄位 。 最新有小夥伴遇到資料庫升級問題了,說網上都是2.0版本的升級方法,

【OpenCV】3.4.0影象拼接Stitching模組介紹

Images stitching 是opencv3.4.0中的模組之一,使用此模組可以實現對影象的拼接。在此之前需要編譯opencv3.4.0+contrib。具體編譯方法可以點此連結。也可以直接

android camera(一)camera模組CMM介紹

關鍵詞:android  camera CMM 模組 camera引數 平臺資訊: 核心:linux 系統:android 平臺:S5PV310(samsung exynos 4210)  作者:xubin341719(歡迎轉載,請註明作者) 新專案開案,程式碼他們還沒給

Vue.js原始碼中大量採用的ES6新特性介紹模組、let、const

1 關於ES6      ECMAScript6(以下簡稱ES6)是JavaScript語言的最新一代標準,釋出於2015年6月,因為ECMA委員會決定從ES6起每年更新一次標準,因此ES6被改名為ES2015,後面的標準將按照發布的年份命名,比如ES2016、ES2017。