XOrmlite 一個方便實用的OrmLite資料庫框架,支持一鍵集成

XOrmlite 一個方便實用的OrmLite資料庫框架,支持一鍵集成

來自專欄 我的Android開源之旅

XOrmlite

xuexiangjys/XOrmlite?

github.com圖標

一個方便實用的OrmLite資料庫框架,支持一鍵集成。

特徵

  • 支持通過@DataBase進行資料庫配置。
  • 支持自動生成資料庫管理倉庫DataBaseRepository

  • 支持內部存儲和外部存儲兩種資料庫。
  • 支持自定義資料庫存儲位置。
  • 支持自定義資料庫打開、升級以及降級的介面。
  • 支持事務操作、回滾等。

  • 提供了常用的資料庫操作API。

1、演示(請star支持)

Demo下載

github.com/xuexiangjys/ (二維碼自動識別)

2、如何使用

目前支持主流開發工具AndroidStudio的使用,直接配置build.gradle,增加依賴即可.

2.1、Android Studio導入方法,添加Gradle依賴

1.先在項目根目錄的 build.gradle 的 repositories 添加:

allprojects { repositories { ... maven { url "https://jitpack.io" } }}

2.然後在dependencies添加:

dependencies { ... implementation com.github.xuexiangjys.XOrmlite:xormlite-runtime:1.0.0 annotationProcessor com.github.xuexiangjys.XOrmlite:xormlite-compiler:1.0.0}

2.2、資料庫註冊配置

1.使用@DataBase進行資料庫註冊配置。屬性如下:

  • name :資料庫的名稱,必填。
  • version :資料庫的版本, 默認版本為1
  • type :資料庫的存放類型,默認是內部存儲DataBaseType.INTERNAL
  • path :資料庫存放的路徑,只對外部存儲的資料庫起作用,默認的地址為:/storage/emulated/0/Android/xormlite/databases/

【注意】@DataBase必須註冊在Application類上才起作用。

@DataBase(name = "external", type = DataBaseType.EXTERNAL, path = "/storage/emulated/0/xormlite/databases")public class ExternalApp extends Application { @Override public void onCreate() { super.onCreate(); }}

2.使用@DataBase註冊完後,請編譯一下項目:build -> Rebuild Project,之後會自動生成資料庫管理倉庫: 資料庫名 + DataBaseRepository 的Java文件。文件的生成路徑如下:

例如上面我們註冊的資料庫名為:external,自動生成的資料庫管理倉庫為 ExternalDataBaseRepository。

3.初始化資料庫管理倉庫,設置資料庫實現介面。

  • 內部存儲的資料庫需要需要實現IDatabase介面。

  • 外部存儲的資料庫需要需要實現IExternalDataBase介面。

@DataBase(name = "internal", type = DataBaseType.INTERNAL)public class App extends Application { @Override public void onCreate() { super.onCreate(); InternalDataBaseRepository.getInstance() .setIDatabase(new InternalDataBase()) //設置內部存儲的資料庫實現介面 .init(this); ExternalDataBaseRepository.getInstance() .setIDatabase(new ExternalDataBase( //設置外部存儲的資料庫實現介面 ExternalDataBaseRepository.DATABASE_PATH, ExternalDataBaseRepository.DATABASE_NAME, ExternalDataBaseRepository.DATABASE_VERSION)) .init(this); }}

2.3、資料庫服務獲取

資料庫管理倉庫DataBaseRepository提供了獲取資料庫操作服務的API getDataBase, 傳入標有@DatabaseTable的資料庫實體類Class, 獲取對應的資料庫操作服務DBService

DBService<Student> mDBService = InternalDataBaseRepository.getInstance().getDataBase(Student.class);

2.4、資料庫操作

DBService提供了豐富的資料庫操作API,詳細API請點擊參見。

以下簡要介紹一部分API:

插入

  • insert: 插入單條數據。
  • insertData: 插入單條數據(返回被插入的對象)。
  • insertDatas: 批量添加,返回插入數據的數量。

查詢

  • queryAll: 查詢所有的數據。
  • queryAllOrderBy: 查詢所有的數據並根據列名進行排序,返回一個對象集合。
  • queryAndOrderBy: 有條件的排序查詢,返回一個對象集合。
  • queryById: 根據id查詢出一條數據。
  • queryByField: 根據條件查詢,返回一個對象集合。
  • queryByColumn: 根據條件查詢,返回一個對象集合。
  • queryForColumnFirst: 根據條件查詢,返回第一個符合條件的對象。
  • indistinctQueryForColumn: 根據條件模糊查詢,返回一個對象集合。
  • queryDataBySql: 根據sql語句查詢,返回對象的集合。

更新

  • updateData: 使用對象更新一條記錄(注意:對象必須帶唯一標識ID,且該方法不能更新ID欄位)。
  • updateDataByColumn: 根據某一或多個條件更新對象。
  • updateDataBySQL: 根據條件做update時直接使用sql語句進行更新,sql語句中必須包含關鍵字【INSERT,DELETE,UPDATE】。

刪除

  • deleteData: 根據對象刪除一條記錄(注意:對象必須帶唯一標識ID,否則方法不起作用)。
  • deleteDatas: 批量刪除(注意:對象必須帶唯一標識ID,否則方法不起作用)【大數據量的刪除不起左右,會報too many SQL variables錯誤】。
  • deleteAll: 刪除所有數據。
  • deleteById: 根據id刪除一條記錄。

其他

  • executeSql: 執行sql語句。
  • getQueryBuilder: 返回QueryBuilder。
  • getUpdateBuilder: 返回UpdateBuilder。
  • getDeleteBuilder: 返回DeleteBuilder。

事務操作

  • doInTransaction: 執行事務操作。
  • beginTransaction: 開啟資料庫事務操作。
  • commit: 提交事務。
  • rollBack: 事務回滾。

2.5、資料庫操作示例

1.插入單條數據

Student student = new Student();student.setUserName("xuexiang");student.setSex("男");student.setAge((int) (Math.random() * 100));try { mDBService.insert(student);} catch (SQLException e) { e.printStackTrace();}

2.更新資料庫某一欄位

try { mDBService.updateDataByColumn("username", "xxxx", "username", "xuexiang");} catch (SQLException e1) { e1.printStackTrace();}

3.執行事務插入

try { mDBService.doInTransaction(new Callable<Boolean>() { @Override public Boolean call() throws Exception { for (int i = 0; i < mTempList.size(); i++) { mDBService.insert(mTempList.get(i)); } return true; } });} catch (SQLException e) { e.printStackTrace(); ToastUtils.toast("事務執行失敗!");}

4.執行事務刪除

try { mDBService.doInTransaction(new Callable<Boolean>() { @Override public Boolean call() throws Exception { for (int i = 0; i < mTempList.size(); i++) { mDBService.deleteData(mTempList.get(i)); } return true; } }); mStudentAdapter.updateList(mDBService.queryAll());} catch (SQLException e) { e.printStackTrace(); ToastUtils.toast("事務執行失敗!");}

聯繫方式

qm.qq.com/cgi-bin/qm/qr? (二維碼自動識別)


推薦閱讀:

微軟校園Hackathon南京站 無駭客 不青春
Python數據分析及可視化實例之存儲方式簡介
MySQL
MongoDB與EDI系統集成
MongoDB 存儲引擎 WiredTiger 原理解析

TAG:MySQL | MongoDB | 資料庫 |