GreenDao使用の詳細、パッケージング、最適化のアップグレード
GreenDao
http://greenrobot.org/greendao/documentation/公式サイト
Androidはデータベースのサードパーティフレームワークを開発し、効率は高いと言われていますが、オリジナルのアップグレードよりずっと便利です.自分に書いて後で便利に見て、みんなに一緒に勉強して使うように共有します.
1、工事build.gradleの下
2、moudleのbuild.gradle
3、プロジェクトの同期の下で、もう一度BUILDをやり直す
4、MyApplication初期化
5、Userテーブルエンティティークラスを作成する:
6.SQLUtilsの作成
7.SQLUtilsを使用してGreenDaoを操作する挿入データ クエリーデータ 修正データ 削除データ
GreenDaoパッケージによるアップグレード・データベースの元のデータ損失の解決
1、Github上のフレーム【1】依存を追加し、GreenDaoのバージョンに従って依存バージョンを選択する
1、パッケージMyOpenHelper
3、Myapplicationでデータベースを作成する:
質問があればメールを送ることができます[email protected]
http://greenrobot.org/greendao/documentation/公式サイト
Androidはデータベースのサードパーティフレームワークを開発し、効率は高いと言われていますが、オリジナルのアップグレードよりずっと便利です.自分に書いて後で便利に見て、みんなに一緒に勉強して使うように共有します.
1、工事build.gradleの下
buildscript {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
google()
mavenCentral()//***GreenDao
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'//***GreenDao
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
2、moudleのbuild.gradle
android {
..............
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1 //
daoPackage 'com.study.test.testapplication.db' // +dbName
targetGenDir 'src/main/java' //db
}
}
dependencies {
......
implementation 'org.greenrobot:greendao:3.2.2'
}
3、プロジェクトの同期の下で、もう一度BUILDをやり直す
4、MyApplication初期化
public class MyApplication extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApplication instances;
@Override
public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
/**
*
*
* @return
*/
public static MyApplication getInstances() {
return instances;
}
/**
* greenDao
*/
private void setDatabase() {
// DaoMaster DevOpenHelper, SQLiteOpenHelper 。
// , 「CREATE TABLE」 SQL , greenDAO 。
// : DaoMaster.DevOpenHelper , , 。
// , , , 。
mHelper = new DaoMaster.DevOpenHelper(this, "test-db", null);
db = mHelper.getWritableDatabase();
// : DaoMaster, Session 。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
5、Userテーブルエンティティークラスを作成する:
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
@NotNull
private String name;
private String sex;
private String age;
private String email;
..... build ...
}
6.SQLUtilsの作成
public class SQLiteUtils {
private static SQLiteUtils instance;
private UserDao userEntityDao;
private DaoSession daoSession;
private DaoMaster.DevOpenHelper helper;
private SQLiteUtils() {
daoSession = MyApplication.getInstances().getDaoSession();
userEntityDao = daoSession.getUserDao();
QueryBuilder.LOG_VALUES=true;
QueryBuilder.LOG_SQL=true;
}
public static SQLiteUtils getInstance() {
if (instance == null) {
synchronized (SQLiteUtils.class) {
if (instance == null) {
instance = new SQLiteUtils();
}
}
}
return instance;
}
//
public void addUser(User testBean) {
userEntityDao.insert(testBean);
}
//
public void deleteUser(User testBean) {
userEntityDao.delete(testBean);
}
//
public void updateUser(User testBean) {
userEntityDao.update(testBean);
}
/**
* ,
* @param age
* @param user
*/
public void updateWhereAgeUser(String age,User user){
daoSession.getDatabase().execSQL("update user set age=? where age=?and email=?",new Object[]{age,user.getAge(),user.getEmail()});
}
//
public List<User> selectAllUser() {
userEntityDao.detachAll();//
List<User> list1 = userEntityDao.loadAll();
return list1 == null ? new ArrayList<User>() : list1;
}
//
public List<User> selectWhereAge(String age) {
QueryBuilder<User> queryBuilder = userEntityDao.queryBuilder().where(UserDao.Properties.Age.eq(age));
return queryBuilder.list();
}
//
public void deleteAllUser() {
userEntityDao.deleteAll();
}
/**
*
* @param age [ ]
*/
public void deletewhereAge(String age) {
daoSession.getDatabase().execSQL("delete from user where age=?",new Object[]{age});
}
/**
*
* : ,
*/
public void closeConnection() {
closeHelper();
closeDaoSession();
}
private void closeHelper() {
if (helper != null) {
helper.close();
helper = null;
}
}
private void closeDaoSession() {
if (daoSession != null) {
daoSession.clear();
daoSession = null;
}
}
}
7.SQLUtilsを使用してGreenDaoを操作する
SQLiteUtils.getInstance().addUser(new User(null, "name", "sex", "10", "email"));
//
SQLiteUtils.getInstance().selectAllUser();
//
SQLiteUtils.getInstance().selectWhereAge(“10”);
SQLiteUtils.getInstance().updateWhereAgeUser("10",new User(null, "name1221", "sex", "22", "email"));
// , id
SQLiteUtils.getInstance().deletewhereAge(new User());
//
SQLiteUtils.getInstance().deletewhereAge("1000");
GreenDaoパッケージによるアップグレード・データベースの元のデータ損失の解決
1、Github上のフレーム【1】依存を追加し、GreenDaoのバージョンに従って依存バージョンを選択する
1、パッケージMyOpenHelper
public class MyOpenHelper extends DaoMaster.DevOpenHelper {
public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
super(context, name, factory);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
// super.onUpgrade(db, oldVersion, newVersion); // !!!
if (oldVersion < newVersion) {
Log.i("version", oldVersion + "--- ---" + newVersion);
}
MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
@Override
public void onCreateAllTables(Database db, boolean ifNotExists) {
Log.e("chenxh","ifNotExists:"+ifNotExists);
DaoMaster.createAllTables(db, ifNotExists);
}
@Override
public void onDropAllTables(Database db, boolean ifExists) {
Log.e("chenxh","ifExists:"+ifExists);
DaoMaster.dropAllTables(db, true);
}
},UserDao.class);// , ,
}
}
3、Myapplicationでデータベースを作成する:
public class MyApplication extends Application {
private MyOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApplication instances;
@Override
public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
/**
*
*
* @return
*/
public static MyApplication getInstances() {
return instances;
}
/**
* greenDao
*/
private void setDatabase() {
//
MigrationHelper.DEBUG = true;
// Daomaster
mHelper = new MyOpenHelper(this, "test-db", null);
db = mHelper.getWritableDatabase();
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
質問があればメールを送ることができます[email protected]