美文网首页
DBFlow使用

DBFlow使用

作者: xinayida | 来源:发表于2017-03-01 18:13 被阅读0次

    DBFlow优点介绍

    DBFlow的设计吸取了其他很多ORM框架中好的特征,并将之做得更好。它很灵活,让你能更专注于App中真正需要关注的地方。不要让一个ORM库限制了你的思维,而是让代码在你的App中工作得更好。

    扩展性: ORM所需的数据类只需要实现Model接口即可,而不需要必须继承一个类,同时为了方便,我们还是推荐继承BaseModel,这是Model接口的一个标准实现。这样你既可以通过继承一个来自其他包的非Model类来生成你的数据库表,也可以通过继承一个Model类并通过添加@Column注解的属性向表中自由添加列。这一切都是为了方便你的使用。

    速度:DBFlow基于AnnotationProcessing(注解处理器),通过编译期代码生成,运行时对性能是零损耗的。通过模板来为你维护生成的代码。通过缓存和尽可能地重用对象,我们得到了比原生SQLite更快的速度。同时我们还支持懒加载(lazy-loading),比如对于@ForeignKey和@OneToMany,这使得我们有着更高效得查询效率

    SQLite查询流(SQLite Query Flow):
    DBFlow的查询语法尽可能地和SQL语句相似,使您能更快上手。select(name,
    screenSize).from(Android.class).where(name.is(“Nexus
    5x”)).and(version.is(6.0)).querySingle()

    开源: 整个DBFlow库都是开源的,而且也非常欢迎大家来为这个库贡献自己的力量。 Robust:
    我们支持Trigger,ModelView,Index,Migration,所有的数据库操作都在同一个线程(线程安全),还有其他特性。

    多数据库、多表单: 我们无缝支持多数据库文件,database modules using DBFlow in other
    dependencies, simultaneously. 基于SQLite:
    SQLite是世界上使用最广泛的数据库引擎,基于SQLite的DBFlow使你不需要被限制在某些平台上。

    特性:
    1、无缝支持多个数据库;
    2、使用annotation processing提高速度;
    3、ModelContainer类库可以直接解析像JSON这样的数据;
    4、增加灵活性的丰富接口。

    1.配置

    在项目目录的build.gradle中加入:

    allprojects {
        repositories {
            ...
            // required to find the project's artifacts
            maven { url "https://www.jitpack.io" }
        }
    }
    
    dependencies {
          ...
          classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
    

    在工程目录的build.gradle中加入:

    apply plugin: 'com.neenbedankt.android-apt'
    
    def dbflow_version = "4.0.0-beta5"
    dependencies {
        annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
    
        // use kapt for kotlin apt if you're a Kotlin user
        apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
    
        compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
        compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}
    

    2.使用

    首先在自定义Application中初始化

    public class myApplication extends Application{
    
        @Override
        public void onCreate() {
            super.onCreate();
            FlowManager.init(new FlowConfig.Builder(this).build());
        }
    

    1.创建数据库

    @Database(name = DBFlowDatabase.NAME, version = DBFlowDatabase.VERSION)
    public class DBFlowDatabase {
        //数据库名称
        public static final String NAME = "DBFlowDatabase";
        //数据库版本号
        public static final int VERSION = 1;
    }
    

    2.创建Model

    import com.raizlabs.android.dbflow.annotation.Column;
    import com.raizlabs.android.dbflow.annotation.ModelContainer;
    import com.raizlabs.android.dbflow.annotation.PrimaryKey;
    import com.raizlabs.android.dbflow.annotation.Table;
    import com.raizlabs.android.dbflow.structure.BaseModel;
    
    @ModelContainer //表示可以直接解析JSON
    @Table(database = DBFlowDatabase.class)
    public class UserModel extends BaseModel {
        //自增ID
        @Column
        @PrimaryKey(autoincrement = true)
        public Long id;
        @Column
        public String name;
        @Column
        public int sex;
    }
    

    必须继承BaseModel,BaseModel包含了基本的数据库操作(save、delete、update、insert、exists)

    一个正确的数据表类需要以下几项: 对类添加@Table注解 声明所连接的数据库类,这里是DBFlowDatabase。 定义至少一个主键。
    这个类和这个类中数据库相关列的修饰符必须是包内私有或者public。 这样生成的_Adapter类能够访问到它。 NOTE:
    列(Column)属性可以是private,但这样就必须指定公有public的getter和setter方法。

    创建完成后,需要编译一下,点击编译按钮,或者Build->Make Project即可,它会自动生成一些数据库文件,也会提示你创建是否有误!

    3.增删改查

    UserModel people = new UserModel();
    
            people.name = "张三";
            people.sex = 1;
            people.save();//添加对象,一条一条保存
    
    
            //people.update();//更新对象
            //people.delete();//删除对象
          
    

    多对多关系:

    @Table(database = DBFlowDatabase.class)
    @ManyToMany(referencedTable = UserModel.class)
    public class MediaModel extends BaseModel {
    

    加入ManyToMany注解后build,会自动生成中间表,但关系还是需要自己手动维护


    一对一,一对多,多对多关系:http://www.jianshu.com/p/e875b16283c6
    官方文档:https://github.com/Raizlabs/DBFlow/blob/master/usage2/Intro.md
    DBFlow使用手册:https://yumenokanata.gitbooks.io/dbflow-tutorials/content/sql_wrapper_classes.html
    原文:http://blog.csdn.net/qq_16131393/article/details/50932020
    参考:http://blog.sina.com.cn/s/blog_5d911a3f0101pwiq.html

    相关文章

      网友评论

          本文标题:DBFlow使用

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