Androidデータベースフレームワーク--litepalの使用
10276 ワード
プロジェクトを書くときにデータベースの関連操作に遭遇し、Androidが提供するデータベースの作成と使用は少し複雑で、比較的良いホイール--フレームワークやツールクラスが使えるかどうかを考えていた結果、litepalが発見され、hibernateのようにオブジェクト向けにデータベースが開発された.万物が対象の世界では、使い心地が爽やかすぎる.
LitePalはオープンソースのAndroidデータベースフレームワークです(https://github.com/LitePalFramework/LitePal)は、オブジェクト関係マッピング(ORM)のモデルを採用し、データベースに対する操作をオブジェクトに対する操作に変換します.
Litepalの使用手順:
1.Android studioでgradleファイルに追加:
2.assetsディレクトリの下にlitepalを新規作成します.xmlファイル、このファイルはプロファイルであり、litpalはファイルの反射に基づいて関連情報を得る.
LitePalはオープンソースのAndroidデータベースフレームワークです(https://github.com/LitePalFramework/LitePal)は、オブジェクト関係マッピング(ORM)のモデルを採用し、データベースに対する操作をオブジェクトに対する操作に変換します.
Litepalの使用手順:
1.Android studioでgradleファイルに追加:
dependencies {
compile 'org.litepal.android:core:1.3.1'
}
はjarパッケージをダウンロードしてプロジェクトに追加することもできます.ダウンロードアドレスは上のgithubアドレスと同じです.2.assetsディレクトリの下にlitepalを新規作成します.xmlファイル、このファイルはプロファイルであり、litpalはファイルの反射に基づいて関連情報を得る.
xxx">
。
3. LitepalApplication, context, LitepalApplication, context。
:
<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
application>
manifest>
すでにアプリケーションがある は、このアプリケーションにLitePalApplicationを させることができます.たとえば、 のプロジェクトでは、 のようにします./**
* :songwenju on 2016/4/13 21:48
* :[email protected]
*/
public class BaseApplication extends LitePalApplication {
public static Handler getAppHandler() {
Looper.prepare();
return new Handler();
}
}
LitePalApplicationのソースコードを て、このApplicationを してtConextを してグローバルなcontextを ることができます.ソースコードは の りです. /**
* Get the global application context.
*
* @return Application context.
* @throws org.litepal.exceptions.GlobalException
*/
public static Context getContext() {
if (sContext == null) {
throw new GlobalException(GlobalException.APPLICATION_CONTEXT_IS_NULL);
}
return sContext;
}
アプリケーションに がある はpublic class MyOwnApplication extends BaseApplication {
...
}
このときは の で できます.public class MyOwnApplication extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
LitePalApplication.initialize(this);
}
...
}
4.リストを し、litepalのクラス DataSupportを します. は のプロジェクトです.package com.wjustudio.phoneManager.javaBean;
import org.litepal.crud.DataSupport;
/**
* songwenju on 16-4-20 : 12 : 23.
* :[email protected]
*/
public class BlackNumInfo extends DataSupport{
private String blackNum;
private int mode;
public String getBlackNum() {
return blackNum;
}
public void setBlackNum(String blackNum) {
this.blackNum = blackNum;
}
public int getMode() {
return mode;
}
public void setMode(int mode) {
this.mode = mode;
}
public BlackNumInfo() {
}
@Override
public String toString() {
return "BlackNumInfo{" +
"blackNum='" + blackNum + '\'' +
", mode=" + mode +
'}';
}
}
データベースのアップグレードは、クラスにフィールドを し、 に したxmlのバージョン を します.
5.データベーステーブルに するcurd
1)データを し、オブジェクトを び すsaveメソッド
2)データを し, にidを っていればfindを い,saveを いる.githubが えた は のとおりです.Album albumToUpdate = DataSupport.find(Album.class, 1);
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.save();
すべてのデータを したい :Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.update(id);
あるいは の のデータがあって、この でもupdateAllを って、 を たすすべてのデータを して、もし が キーあるいは の の があるならば、1 のデータを したことに します.Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "album");
3)
Id:DataSupport.delete(Song.class, id);
を たすデータを します.DataSupport.deleteAll(Song.class, "duration > ?" , "350");
4)クエリーデータ
Id:Song song = DataSupport.find(Song.class, id);
クエリーすべて:List<Song> allSongs = DataSupport.findAll(Song.class);
クエリー を たすもの:List<Song> songs = DataSupport.where("name like ?", "song%").order("duration").find(Song.class);
のプロジェクトはMVPのデザインモードを っています. はコードを します.package com.wjustudio.phoneManager.biz;
import com.wjustudio.phoneManager.javaBean.BlackNumInfo;
import java.util.List;
/**
* songwenju on 16-4-20 : 12 : 27.
* :[email protected]
*/
public interface IBlackNumBiz {
/**
*
* @return
*/
List getAllBlackNum();
/**
*
* @param blackNumInfo
*/
void insertBlackNum(BlackNumInfo blackNumInfo);
/**
* blackNumInfo
* @param blackNum
*/
BlackNumInfo getBlackNumInfo(String blackNum);
/**
*
* @param blackNumInfo
*/
void deleteBlackNum(BlackNumInfo blackNumInfo);
/**
*
* @param blackNumInfo
*/
void updateBlackNum(BlackNumInfo blackNumInfo);
/**
*
* @param blackNum
* @return
*/
boolean isExist(String blackNum);
}
package com.wjustudio.phoneManager.biz;
import android.content.ContentValues;
import com.wjustudio.phoneManager.javaBean.BlackNumInfo;
import org.litepal.crud.DataSupport;
import java.util.List;
/**
* songwenju on 16-4-20 : 13 : 23.
* :[email protected]
*/
public class BlackNumBizImpl implements IBlackNumBiz {
public static final int BLACK_NUM_PHONE = 1;
public static final int BLACK_NUM_SMS = 2;
public static final int BLACK_NUM_ALL = 3;
@Override
public List getAllBlackNum() {
return DataSupport.findAll(BlackNumInfo.class);
}
@Override
public void insertBlackNum(BlackNumInfo blackNumInfo) {
blackNumInfo.saveThrows();
}
@Override
public BlackNumInfo getBlackNumInfo(String blackNum) {
List blackNumInfos = DataSupport.where("blackNum = ?", blackNum).find(BlackNumInfo.class);
return blackNumInfos.get(0);
}
@Override
public void deleteBlackNum(BlackNumInfo blackNumInfo) {
if (!blackNumInfo.isSaved()) {
blackNumInfo.save();
}
blackNumInfo.delete();
}
@Override
public void updateBlackNum(BlackNumInfo blackNumInfo) {
ContentValues values = new ContentValues();
values.put("mode", blackNumInfo.getMode());
DataSupport.updateAll(BlackNumInfo.class, values, "blackNum = ?", blackNumInfo.getBlackNum());
}
@Override
public boolean isExist(String blackNum) {
List blackNumInfos = DataSupport.where("blackNum = ?", blackNum).find(BlackNumInfo.class);
return blackNumInfos !=null && blackNumInfos.size()> 0;
}
}
は、このようにプロジェクトでBlackNumBizImplのオブジェクトを してデータベースを することができます.