美文网首页
目前最好用的安卓数据库,DBFlow使用详解

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

作者: 来自唐朝的栗子 | 来源:发表于2017-05-22 16:55 被阅读0次

    1.在你使用之前,建议你先阅读一下官方文档
    https://agrosner.gitbooks.io/dbflow/content/
    2.步骤如下:
    (1)在项目级的gradle中添加

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.2'
            classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
            maven { url "https://www.jitpack.io" }
        }
    }
    

    (2)在Module级别的gradle中添加

    apply plugin: 'com.neenbedankt.android-apt'
    def dbflow_version = "4.0.2"
    
    
    dependencies {
        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}"
        // sql-cipher database encyrption (optional)
        compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}"
    }
    

    (3)在你的Application的onCreate()方法中初始化

    @Override
        public void onCreate() {
            super.onCreate();
            FlowManager.init(new FlowConfig.Builder(this).build());
    //      FlowManager.init(this);//这句也可以初始化
        }
    

    (4)新建AppDatabase类,配置数据库相关参数

    package song.peter.com.custompassword.dbflow;
    
    import com.raizlabs.android.dbflow.annotation.Database;
    import com.raizlabs.android.dbflow.annotation.Migration;
    import com.raizlabs.android.dbflow.sql.SQLiteType;
    import com.raizlabs.android.dbflow.sql.language.SQLite;
    import com.raizlabs.android.dbflow.sql.migration.AlterTableMigration;
    import com.raizlabs.android.dbflow.sql.migration.BaseMigration;
    import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
    
    /**
     * Created by peter on 2017/5/19.
     */
    
    @Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
    public final class AppDatabase {
        //数据库名称
        public static final String NAME = "AppDatabase";
        //数据库版本号
        public static final int VERSION = 1;
    
    }
    

    (5)新建数据库表

    package song.peter.com.custompassword.dbflow;
    
    import com.raizlabs.android.dbflow.annotation.Column;
    import com.raizlabs.android.dbflow.annotation.PrimaryKey;
    import com.raizlabs.android.dbflow.annotation.Table;
    import com.raizlabs.android.dbflow.structure.BaseModel;
    
    import java.util.UUID;
    
    /**
     * Created by peter on 2017/5/19.
     * 要继承BaseModel,这个类已经实现了增删改查的方法
     */
    
    @Table(database = AppDatabase.class)
    public class UserData extends BaseModel {
        @PrimaryKey(autoincrement = true)//ID自增
        public long id;
    
        /**
         * 姓名
         */
        @Column
        public String name;
    
        /**
         * 年龄
         */
        @Column
        public int age;
    
        /**
         * 性别
         */
        @Column
        public boolean sex;
    
    //备注:DBFlow会根据你的类名自动生成一个表明,以此为例:
    //这个类对应的表名为:UserData_Table,这是作者在实践中得出来的
    }
    

    (6)具体使用

    UserData userData = new UserData();
    ModelAdapter<UserData> adapter = FlowManager.getModelAdapter(UserData.class);
    
     userData.id = 1;//这一行必须加,必须指定id,后面才能根据id修改某一条的数据
     userData.name = "张三";
     userData.age = 99;
     userData.sex = true;
    
    adapter.insert(userData);//插入
    adapter.delete(userData);//删除
    adapter.update(userData);//修改
    //修改的时候的代码
    UserData userData = new UserData();
    userData.id = 1;
    userData.name = "9999";
    userData.update();//只有继承了BaseModel才能用这个方法,否则调用这个方法adapter.update(userData);
    
    //再来点福利,update高级用法,增删改查都是同理,就不一一列举了
    SQLite.update(UserData.class).set(UserData_Table.name.eq("888")).where(UserData_Table.id.eq(1)).execute();
    //UserData_Table就是DBFlow自动生成的表明,在(5)的备注中已经提到了
    
    //查询
    List<UserData> list = SQLite.select().from(UserData.class).queryList();
    

    (7)数据库增加字段
    7.1 修改数据库的版本号

    public static final int VERSION = 2;
    

    7.2 修改数据库表结构

     @Column
        public String content;//增加的字段
    

    7.3 这个时候,需要Make Project一下,Mac版的可以直接commond+F9 ,或者直接点那个按钮
    7.4 在AppDatabase这个数据库配置类中,添加方法如下:

    /**
         * 数据库的修改:
         * 1、PatientSession 表结构的变化
         * 2、增加表字段,考虑到版本兼容性,老版本不建议删除字段
         */
        @Migration(version = VERSION, database = AppDatabase.class)
        public static class Migration2UserData extends AlterTableMigration<UserData> {
    
            public Migration2UserData(Class<UserData> table) {
                super(table);
            }
    
            @Override
            public void onPreMigrate() {
                addColumn(SQLiteType.TEXT, "content");
            }
        }
    

    (8)到此,关于DBFlow相关的介绍也就结束了,具体关于内连,外联,左联接,右联接,外键,一对多等等,可以查阅官方文档。
    https://agrosner.gitbooks.io/dbflow/content/

    相关文章

      网友评论

          本文标题:目前最好用的安卓数据库,DBFlow使用详解

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