Green Daoの学習使用
7186 ワード
Green Dao:
greenDaoは、SQLiteデータベースにオブジェクトをマッピングする軽量かつ高速なORMソリューションです。
公式サイトのアドレス:http://greenrobot.org/greendao/
グリーンDAO優勢
1、簡素化された倉庫
2、性能を最大化する
3、メモリオーバーヘッドを最小化する
4、使いやすいAPI
5、Androidを高度に最適化する
Green Dao使用
1プロファイルの関連:
主要コード
ビーンファイルを作成します。
エンティティコメント:
作成ヘルプクラス
最初にUserDaoオブジェクトを取得します。
データベースの添削をUserDaoで行います。挿入操作は以下の通りです。
削除
データの削除と修正データの考え方は同じです。データを先に検索します。
IDに基づいてデータを修正する
すべてのデータを検索
1.gradleファイルを変更する
まずmoduleのgradleファイルでバージョン番号を変更します。
一般的なデータベースのアップグレードはこれでいいです。特別な状況は自分でデータベースの移行スクリプトを作成する必要があります。この場合はUpgradeHelperをカスタマイズできます。
greenDaoは、SQLiteデータベースにオブジェクトをマッピングする軽量かつ高速なORMソリューションです。
公式サイトのアドレス:http://greenrobot.org/greendao/
グリーンDAO優勢
1、簡素化された倉庫
2、性能を最大化する
3、メモリオーバーヘッドを最小化する
4、使いやすいAPI
5、Androidを高度に最適化する
Green Dao使用
1プロファイルの関連:
compile 'org.greenrobot:greendao:3.2.0'
2 build.gradleで構成する:dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
3、カスタムパスgreendao{
schemaVersion 1
daoPackage 'com.greendao.song.greendao'
targetGenDir 'src/main/java'
}
schema Version-->データベースのschemaバージョン番号を指定して、移転などの操作は使うことができます。daoPackage-->daoのパケット名は、デフォルトではentityのカバンです。データベースファイルのディレクトリを生成します。主要コード
ビーンファイルを作成します。
エンティティコメント:
@Entity(
// ,
//
schema = "myschema",
// , ,
active = true,
//
//
nameInDb = "AWESOME_USERS",
// Define indexes spanning multiple columns here.
indexes = {
@Index(value = "name DESC", unique = true)
},
// DAO ( true)
// , false
// GreenDAO , false
createInDb = false
)
public class User {
...
}
基礎コメント:@Entity
public classUser {
@Id(autoincrement = true)
private Long id;
@Property(nameInDb = "USERNAME")
private String name;
@NotNull
private int repos;
@Transient
private int tempUsageCount;
...
}
1.実体@Entityコメントschema: GreenDao schema
active: , 、
nameInDb: ,
indexes: ,
createInDb:
2.基礎属性の注釈@Id : Long , @Id(autoincrement = true)
@Property: , :@Property (nameInDb="name")
@NotNul:
@Transient :
3.索引の注釈@Index: @Index , name , unique
@Unique:
4.関係コメント@ToOne: ( )
@ToMany:
プロジェクトをコンパイルして、Userエンティティ類は自動的にコンパイルして、get、set方法を生成して、しかもcomp.greendo.genディレクトリの下で3つのファイルを生成して、DaoMaster、DaoSession種類;作成ヘルプクラス
public class GreenDaoHelper {
private static DaoMaster.DevOpenHelper mHelper;
private static SQLiteDatabase db;
private static DaoMaster mDaoMaster;
private static DaoSession mDaoSession;
/**
* greenDao, Application ;
*/
public static void initDatabase() {
// DaoMaster DevOpenHelper, SQLiteOpenHelper 。
// , 「CREATE TABLE」 SQL , greenDAO 。
// : DaoMaster.DevOpenHelper , , 。
// , , , 。
mHelper = new DaoMaster.DevOpenHelper(MyApplication.context, "cache-db", null);
db = mHelper.getWritableDatabase();
// : DaoMaster, Session 。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public static DaoSession getDaoSession() {
return mDaoSession;
}
public static SQLiteDatabase getDb() {
return db;
}
}
添削して調べる最初にUserDaoオブジェクトを取得します。
mUserDao = GreenDaoHelper.getDaoSession().getUserDao();
増加するデータベースの添削をUserDaoで行います。挿入操作は以下の通りです。
mUser = new User((long)1," ");
mUserDao.insert(mUser);//
Userの最初のパラメータはidです。ここでnullを送ると挿入中にidフィールドが自動的に増えます。削除
データの削除と修正データの考え方は同じです。データを先に検索します。
List userList = (List) mUserDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list();
for (User user : userList) {
mUserDao.delete(user);
}
whereは検索条件を表しています。ここではidが10以下のデータを調べています。whereのパラメータは複数あります。つまり、複数のクエリ条件を追加することができます。最後のリストは検索結果がListセットであることを表しています。データを調べたいだけなら、最後のuniqueでいいです。もちろん、私達はidによってデータを削除することもできます。User user = mUserDao.queryBuilder().where(UserDao.Properties.Id.eq(16)).build().unique();
if (user == null) {
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT).show();
}else{
mUserDao.deleteByKey(user.getId());
}
メインキーから削除mUserDao.deleteByKey(id);
すべてのデータを削除mUserDao.deleteAll();
変更IDに基づいてデータを修正する
mUser = new User((long)2,"anye0803");
mUserDao.update(mUser);
調べますすべてのデータを検索
List users = mUserDao.loadAll();
データを調べますUser user = mUserDao.queryBuilder().where(UserDao.Properties.name.eq(" ")).unique();
データベースのアップグレード1.gradleファイルを変更する
まずmoduleのgradleファイルでバージョン番号を変更します。
//
schemaVersion 2
2.エンティティクラスを変更する@Entity
public class User {
@Property
private int age;
@Property
private String password;
@Id
private Long id;
@Property(nameInDb = "USERNAME")
private String username;
@Property(nameInDb = "NICKNAME")
private String nickname;
}
コンパイル項目を再現して実行すればいいです。一般的なデータベースのアップグレードはこれでいいです。特別な状況は自分でデータベースの移行スクリプトを作成する必要があります。この場合はUpgradeHelperをカスタマイズできます。
public class UpgradeHelper extends DaoMaster.DevOpenHelper {
public static String TAG = UpgradeHelper.class.getSimpleName();
public UpgradeHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
super(context, name, factory);
}
/**
* Here is where the calls to upgrade are executed
* onUpgrade
*/
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
/* i represent the version where the user is now and the class named with this number implies that is upgrading from i to
i++ schema */
for (int i = oldVersion; i < newVersion; i++) {
Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by migrating all tables data");
// TODO: xxDao
MigrationHelper.getInstance().migrate(db, UserDao.class);
}
}
}