DbFlow

作者: 健身小可乐 | 来源:发表于2017-11-09 23:42 被阅读0次

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);
    }

数据库的创建 版本号和名称

@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;
}

表的创建,至少有一个主键

@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

同一个对象的话 保存的是同一条记录,如下只会在数据库插入同一条记录

 User user = new User();
        user.age=90;
        user.save();  //调用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()方法才有意义. 但实际发现
调用 user.save()之后 ,再次修改user 的属性 再次调用user.save()方法,发现操纵的其实是同一条记录 ,此时第二次的save()方法也就相当于了update();

2.利用 ModelAdapter

ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class);
adapter.insert(user); //最好不要和adapter.save(user)一块使用,且连续调用两次insert(user)会保存两次记录,而连续save(user)两次的话只会插入一条记录
user.name = "Not Andrew Grosner";
adapter.update(user); 
adapter.delete(user); 

关于查询

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());
        }

在事务中

同步
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();

相关文章

  • DBFlow基础篇

    为什么使用DBFlow DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sp...

  • Android数据库框架DBFlow的使用

    DBFlow Android最好用的数据库框架——DBFLOW全面解析 DBFlow 是一个基于注解处理器开发的使...

  • DbFlow

    cardContactModels 为集合数据 DbFlow sql转化特例1 DbFlow sql转化特例2

  • DbFlow

    DbFlow的使用 配置 在自己的Application中配置 数据库的创建 版本号和名称 表的创建,至少有一个主...

  • DBFlow使用

    DBFlow优点介绍 DBFlow的设计吸取了其他很多ORM框架中好的特征,并将之做得更好。它很灵活,让你能更专注...

  • 1.Dbfow使用的坑

    报错: Caused by: com.raizlabs.android.dbflow.structure.Inva...

  • DbFlow sqlcipher 加密存储

    前言 在学习Dbflow的使用过程中,发现官方文档没有对其加密的方式进行说明,遂进行了总结DbFlow可以通过加入...

  • DBFlow—目前最好用的安卓数据库,DBFlow使用详解

    声明:本文章独家由公众号终端研发部原创发文 数据库DBFlow应用场景及其分析 先上一张效果图 dbflow定义 ...

  • DBFlow使用

    PS: 都说DBFlow使用,话说,真的有人在实际开发中使用这个数据库框架么? 问题一: 如何修改数据表中字段的类...

  • Android数据库神器(bdflow)

    今日观看别人源码的时候偶然间发现了一个很好用的数据库神器,在这里分享一下。 什么是dbflow? dbflow是A...

网友评论

      本文标题:DbFlow

      本文链接:https://www.haomeiwen.com/subject/furvmxtx.html