SQLiteデータベースフレームワーク:LitePal

共通データベースフレームワーク
のAndroidのペースは信じられないほどである、Androidのうち何年間、私はまだあった小学校では非常に、非常に明確にどのように自分の将来のすべてではなく、その時点で、私は考えることができなかったこと、また覚えていますAndroid.Androidデータベースフレームワークは、多くのことを行う必要があります、あなたのお気に入りを選択し、多くのことを把握していない、自分のお気に入りを選ぶのが好き。

シュガー&GreenDao&Afinal&ORMLite&レルム&LiteOrm&DBFlow&ActiveAndroid&LitePal

SugarORMは、オブジェクト・リレーショナル・マッピングモードです。テーブルを提供しながら、データベースの設計と作成プロセスを簡素化するために、明確な;だけ元に戻すを使用しますが、元のビーンビーンの小さな変化を加えることができ、複雑なSQL文が、データの作成および操作を完了するためのシンプルなAPIを記述しないでください。多くのサポート。

Android用GreenDaoは、オブジェクトリレーショナルマッピング(ORM)ツールのために設計されています。これは、SQLiteのリレーショナル・データベースへの適切なインタフェースにオブジェクトを提供します。AndroidのプロジェクトでgreenDaoを使用するために、我々は別の「ビルダー」プロジェクトを作成する必要があり、そのタスクは、プロジェクトのドメイン内の特定のコードを生成することです。これは、他のORMフレームワークと比較して優れた特性を有しています。

Afinalは、AndroidのsqliteのORMとIOCフレームワークです。これは、使用することをよりシンプルにするために、フレームワークの両方のhttpアンドロイドをカプセル化します。FinalDBモジュール、アンドロイドORMフレームは、1行のコードは、CRUDすることができます。、多くのものに多く、その他のお問い合わせをサポートしています。

ORMLite(オブジェクトリレーショナルマッピングLiteは)複雑さとORMのオーバーヘッド機能の標準パッケージの多くを回避しながらのJavaのいくつかの軽量持続性は、SQLデータベースにオブジェクトを提供します。これは、データベースのネイティブAPIはsqliteを呼び出して、JDBCの量を使用してSQLデータベースをサポートするだけでなく、Androidオペレーティングシステムをサポートしています。

レルムはsqliteのを置き換えるために使用されるソリューションである、それはsqliteのより軽量で、独自のデータベースのストレージエンジンを持つことになり、より速いスピードを持っており、APIをストリーミング、などJSONのサポートなど、現代のデータベースの多くの機能を持っていますデータ変更通知、自動データ同期、簡易認証、アクセス制御、イベント処理は、最も重要なことは、Java、Objective Cの、スウィフト、リアクト - ネイティブ、Xamarin 5は達成がある、クロスプラットフォームです。

LiteOrmは、Android上のデータベース(ORM)フレームワークライブラリです。スピード、小型で高性能。開発者は、自動的にマッピングされているデータベースの検索操作の削除だけでなく、永続エンティティとの関係を変更するには、コードの基本的なラインを実装します。デザインの原則:軽量、集中し、性能優先に関係なく、スレッド、および関係データストレージとフォーカシングの、補助工具を使わず、引数なしのコンストラクタは、多くの注釈、設定より規約必要ありません。例えば、使用の極端なシンプルさを、:DB .SAVE(U); db.query(U.class); db.deleteAll(U.class)。

DBFlowはActiveAndroid、回路図、Ollie第、スプリンクルや他のライブラリの利点を兼ね備えています。反射に基づいて、そのパフォーマンスが非常に高いわけではないが、効率greenDAOはスーツに続きました。使用して、コンパイル作業中に非常に類似しActiveAndroid使用を生成しやすいと簡単なテクニックを使用して、注釈に基づきます。速度を向上させるために、注釈処理を使用して、複数のデータベースをシームレスにサポートは、ModelContainerライブラリが豊富なインターフェースの柔軟性を高め、直接、このようなJSONなどのデータを解析することができます。

ActiveAndroidは、Androidプラットフォームに適用可能なアクティブレコード(Active Recordの)建築パターン設計された軽量のORMフレームワークを使用することです

LitePalは、オブジェクト・リレーショナル・マッピング(ORM)モデルです。それは非常に簡単にSQLiteのデータベースを使用する開発者を可能にします。あなたは、SQL文がそうで作成したテーブル、更新テーブル、制約操作、集約とを含むほとんどのデータベース操作を完了することができ書き込むことはできません。

 
LitePal
LitePal使用して統合し、シンプルな
LitePalはCRUD実装
LitePalは、いくつかの共通のAPIについて説明し
 
、簡単なのLitePal統合および使用
に対応するライブラリーの導入
コンパイル「org.litepal.android:core:1.6.1」
プロジェクトは行くことができますが最新のソースコードライブラリを見つけます

適切なファイルの作成Litepal.xml
、対応する資産の下で、その後の資産フォルダ(プロジェクトフォルダ新規作成>フォルダ- >資産フォルダの資産の適切なフォルダを作成することができますを作成する方法を)フォルダ内のすべてのファイルの最初のをlitepal.xml次の該当するフォルダを作成するには、以下の具体的な内容です。

<?xml version = "1.0"エンコード= "UTF-8"?>
<litepal>
<DBNAME値= "ファイル" />
<バージョン値= "1" />
<リスト>
<マッピングクラス= "com.hejin。 download.FileInfo "/>
</リスト>
</ litepal>
这里说明几点问题:

dbnameのタグが適切なデータベース名です。

ラベルのバージョンは注意が参照の内容が変更され、対応するデータベースのバージョン、対応するバージョンにアップグレードです

タグリストを必要とするものには、パスの内部をマッピングへの注意がフルパス名でなければなりませんデータベース管理、です

このカテゴリ内のエンティティクラスリスト内のこのラベルはDataSupportを継承する必要があり、このことを忘れないでください

継承された交換するアプリケーション
ここでは、実際には一部2つの状況です。

これは、アプリケーションを継承しています

直接の後継LitePalApplication

なぜ、あなたはここで直接LitePalApplicationを継承することはできませんので、アプリケーション内のすべてのプロジェクトを実装する前に、この時間単一継承のJavaので、アプリケーションの他のタイプの1受け継いでいる可能性があるため?この2つのケースに分けられますが、LitePalを支援してきました私たちは、その者は、これを達成するために2つのケースを言わせて、この問題について考えました:

最初の

直接アプリケーション()メソッドの対応する項目では以下のように、それをクリックを初期化するOnCreat:

@Override
ます。public voidのonCreate(){
super.onCreate();
LitePal.initialize(この);
}
あなたは、簡単にアプリケーションの他のアプリケーションを継承できるように、

manifest.xmlに適切なアプリケーションの導入は、それはあなたの以前のアプリケーションです

第2

onCreatでLitePal.initializeを呼び出すことなく、ここで、対応するLitePalApplicationに直接後継(本)();このメソッドです。

これは、あなたがアンドロイドを書きたい時に対応するアプリケーションの[アプリケーション]タブに追加することがより特別なものです:名前は=「org.litepal.LitePalApplication」

 
CRUD(CRUD)を達成LitePal
データを追加LitePal
ここで主にオブジェクトを()を保存することによって行われる操作の増加に対応について、あなたは言うのですか?実際には、あなただけの、対応するクラスは、適切なパラメータを追加して与えるし、適切な集団を呼び出しますsave()メソッドは次のように特定のコードであることができます。

LitePalBean zhangSanBean =新しいLitePalBean( "SAN"、 "20"、 "M");
zhangSanBean.save();
LitePalBean liSiBean新しい新しいLitePalBean =( "ジョン・ドウ"、 "25"、 "M");
liSiBean.save( );
。これは、対応するデータベースと、対応するデータベースのテーブル構造を作成しているが、あなたは携帯電話にデバッグしている場合は、ルートの単語が問題になることがあり、同じコンテンツを追加する手順は、ここでは目に見えないではありませんそれに追加

削除LitePalデータ
は次のようなデータを削除する操作は、これは((削除)またはDELETEALLによって削除主要被写体)である、特定のコードです。

/ *これは、すべての名前はジョー・スミス* /です削除することです
DataSupport.deleteAll(?LitePalBean.class、 "ジョー・スミス" "名前=");

LitePalBean zhangSanBean =新新LitePalBean( "ジョー・スミス"、 "20"、「男性「);
zhangSanBean.save();
zhangSanBean.delete();
ここでは二つの方法で削除されました:

直接オブジェクトを削除:オブジェクト)(削除ダイレクトコールである方法。

タイプに応じて、実際には、これはSQLiteのを削除するのと同じです削除し、ここでは「名前は=?」張という名前のすべて、つまり、フィールドの背後にあるすべてのコンテンツの名前を表します場合は、2番目の文の着信コンテンツを説明する必要があります3つのコンテンツは、はいに「?名前=?と年齢=」のような?入ってくる2つのコンテンツがある場合、あなたは私を尋ねてきます。削除されることがに接続されており、

LitePal更新データ
ここでは、直接それを保存保存された完全なデータを変更することが適切である、非常に簡単です、次のように、コードは次のとおりです。

LitePalBean zhaoWuBean =新LitePalBean( "趙五"、 "25"、 "男性");
zhaoWuBean.save();
zhaoWuBean.setAge( "30");
zhaoWuBean.save();
問題があり、私が取ることが最初であるべき感じますこのオブジェクトは、内容の正確性を確保するために運転中に魚。

LitePalクエリ方法
クエリデータ、主に使用される検索(上で動作)とのfindAll()メソッドと、以下のように特定のコードに対応する等です。

一覧<LitePalBean>すべて= DataSupport.findAll(LitePalBean.class);
のため(int型I = 0;私はall.size()<;私は++){
Log.e(TAGを、 "クエリ:" + all.get(I) .toString());
}
}
 
LitePal共通API
DataSupport.findFirst(XXX.class)が
リストXXXの最初の要素を発見します

DataSupport.findLast(XXX.class)
リストXXXの最後の要素を照会

DataSupport.select()
のSQLiteに基づいてキーワードを見つけるために、例えばDataSupport.select(「名前」、「年齢 」)。検索(XXX.class) クエリ他のデータの名前と年齢を対応する二つのデータがチェックされていますないアウト。

DataSupport.whereは()
のSQLiteのキーワード検索に相当し、ここでは一例である- (「?名前=」、 「 ジョー・スミス」)> DataSupport.where .find(XXX.class)クエリは、すべての名前ですジョンのデータ内容。

DataSupport.order()は
SQLiteのキーワード検索における順序に対応する、ソート主に、ここでの例である- > DataSupport.order(価格DESC).find (XXX.class) 降順でそこに配置されています。 DESC識別降順、ASC **
**代表昇順

DataSupport.limit()
データベースクエリの結果の例の数- > DataSupport.limit(3).find( XXX.class); クエリデータ3

DataSupport.offset()
クエリの処方例の結果(私は記事IIおよびIV条を求めています)オフセット- > DataSupport.limit(3).offset (1).find(XXX.class); ここを私たちは、最初から始めているが、それぞれの第一が含まれていません
--------------------- 

おすすめ

転載: www.cnblogs.com/ly570/p/10977614.html