DbFlow

DbFlow的使用

配置

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

 annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:4.0.0-beta7"
    compile "com.github.Raizlabs.DBFlow:dbflow-core:4.0.0-beta7"
    compile "com.github.Raizlabs.DBFlow:dbflow:4.0.0-beta7"

在自己的Application中配置

 @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(this);
    }

數(shù)據(jù)庫的創(chuàng)建 版本號和名稱

@Database(name = MyDataBase.DATABASE_NAME,version = MyDataBase.DATABASE_VERSION)
public class MyDataBase {
    public static final String DATABASE_NAME="MyDatabase";
    public static final int DATABASE_VERSION=1;
}

表的創(chuàng)建,至少有一個主鍵

@Table(database = MyDataBase.class)
public class User extends BaseModel{

    @Column      
    @PrimaryKey(autoincrement = true) //主鍵自增長
    long id;

    @Column
    String name;

    @Column
    String sex;

    @Column
    int age;

    @Column
    Date date;

}

1.對象直接操作記錄 extends BaseModel or implement Model

同一個對象的話 保存的是同一條記錄,如下只會在數(shù)據(jù)庫插入同一條記錄

 User user = new User();
        user.age=90;
        user.save();  //調(diào)用save保存記錄
        user.name="wang";
        user.date=new Date();    //同一個user對象的話是一條記錄
        user.save();

user.delete(); //刪除本條對象所保存的記錄
user.update();//更新本條對象所保存的記錄

一般是先 user.save();//先保存 user.update();再更新
如果沒有 user.save();直接 user.update();的話是不會增加記錄
同理 先 user.save();之后 其他的update(),delete()方法才有意義. 但實際發(fā)現(xiàn)
調(diào)用 user.save()之后 ,再次修改user 的屬性 再次調(diào)用user.save()方法,發(fā)現(xiàn)操縱的其實是同一條記錄 ,此時第二次的save()方法也就相當(dāng)于了update();

2.利用 ModelAdapter

ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class);
adapter.insert(user); //最好不要和adapter.save(user)一塊使用,且連續(xù)調(diào)用兩次insert(user)會保存兩次記錄,而連續(xù)save(user)兩次的話只會插入一條記錄
user.name = "Not Andrew Grosner";
adapter.update(user); 
adapter.delete(user); 

關(guān)于查詢

List < User > wang = SQLite.select().from(User.class).where(User_Table.name.is("wang")).queryList(); //查詢的是整個表中符合條件的

User wang = SQLite.select().from(User.class).where(User_Table.name.is("wang")).querySingle(); //查詢的是第一個符合條件的

刪除的話 先查 再刪

List<User> wang = SQLite.select().from(User.class).where(User_Table.name.is("wang")).queryList();
        for (User usersing:wang) {
            usersing.delete();
            Log.e("msg:", usersing.toString());
        }

在事務(wù)中

同步
FlowManager.getDatabase(MyDataBase.class).executeTransaction(new ITransaction() {
            @Override
            public void execute(DatabaseWrapper databaseWrapper) {
                ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class);
                final User user = new User("wang", "女", 11, new Date());
                adapter.insert(user);
                adapter.insert(user);

            }
        });

異步

            @Override
            public void execute(DatabaseWrapper databaseWrapper) {
                ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class);
                final User user = new User("wang", "女", 11, new Date());
                adapter.insert(user);
                adapter.insert(user);
                adapter.insert(user);
                adapter.insert(user);
                adapter.insert(user);
            }
        }).execute();

或者

    Transaction transaction = FlowManager.getDatabase(MyDataBase.class).beginTransactionAsync(new ITransaction() {
            @Override
            public void execute(DatabaseWrapper databaseWrapper) {
                ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class);

            }
        }).build();

        transaction.execute();
        transaction.cancel();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽光小鎮(zhèn)少爺閱讀 3,967評論 0 8
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,896評論 18 399
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊閱讀 18,565評論 0 85
  • DBFlow優(yōu)點介紹 DBFlow的設(shè)計吸取了其他很多ORM框架中好的特征,并將之做得更好。它很靈活,讓你能更專注...
    xinayida閱讀 5,287評論 1 2
  • 余曾過牧野,值一山僧,其貌洵美,皎如玉樹。神清且異,不落塵垢。 適煙籠陂田,白鷺頡頏,桃花灼灼,鶯啼松風(fēng)。余借飛花...
    蘇長亭閱讀 856評論 88 45

友情鏈接更多精彩內(nèi)容