专业出黑网赌被黑追款

Android DBFlow数据库入门笔记

dgech 2017年03月20日 网赌被黑 1779 0
  • 网赌被黑找腾龙D哥出黑【微信:gm4927 QQ:861122225】

    Android DBFlow数据库入门笔记

    相比较SQLite数据库而言,DBFlow综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点。同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后。并且基于注解,使用apt技术,无需编写大多数SQL语句,无需为每张表都编写ContentValues,无需将游标转化为模型等等,可谓是非常方便。

    「DBFlow官方github」https://github.com/Raizlabs/DBFlow

    1.引入依赖:

    [Project]build.gradle:

    这里写图片描述

    [app]build.gradle

    这里写图片描述

    代码复制区:

    [Project]build.gradle:

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

    [app]build.gradle

    dependencies {
        apt 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
        compile "com.raizlabs.android:DBFlow-Core:2.2.1"
        compile "com.raizlabs.android:DBFlow:2.2.1"
    }
    

    此外,官方的github上对此依赖的描述更加详细,比如对kotlin的支持,有时间的朋友不妨参考一下。

    「再来一次官方github」https://github.com/Raizlabs/DBFlow

    2.初始化

    使用DBFlow需要在app的Application中初始化配置:

    public class MyApplication extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            //初始化配置DBFlow
            FlowManager.init(getApplicationContext());
        }
    }

    注意不要忘记在AndroidManifest文件下配置自定义的Application:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.mei_husky.sample_dbflow">
    
        <application
            android:name=".common.MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".ui.MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    ok,接下来我们就可以开始数据库的创建了。

    3.数据库&表的创建

    现在假设我们想要创建一个叫做RewardDatabase的数据库用来处理一个「抽奖系统」:

    **
     * Created by fcn-mq on 2017/3/20
     * 抽奖系统数据库
     */
    @Database(name = RewardDatabase.NAME, version = RewardDatabase.VERSION)
    public class RewardDatabase {
    
        public static final String NAME = "RewardDatabase";
    
        public static final int VERSION = 1;
    
    }

    在注解代码:

    @Database(name = RewardDatabase.NAME, version = RewardDatabase.VERSION)

    中,我们可以看到,我们创建了一个数据库(@Database),这个数据库的name和version分别为”RewardDatabase”和”1”。

    接下来这个「抽奖系统」首先需要创建的就是「奖品」表存放各种各样的奖品model:

    /**
     * Created by fcn-mq on 2017/3/20.
     */
    @ModelContainer
    @Table(databaseName = RewardDatabase.NAME)
    public class RewardModel extends BaseModel {
    
        @Column
        @PrimaryKey(autoincrement = true)
        public Long id;//奖品id
        @Column
        @Unique
        public String name;//奖品名称
        @Column
        public int count;
        @Column
        public int all_count;
        @Column
        public float probability;//中奖率
        @Column
        public long iamge_res;
    }
    

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

    @Table(databaseName = RewardDatabase.NAME)

    我们可以看到,这个Model是关联在RewardDatabase数据库下的一个Table(表)。

    @Column
    @PrimaryKey(autoincrement = true)
    public Long id;//奖品id

    @column注解指的是id这个参数是该表中的一个column(列名),并且这个列作为@PrimaryKey(主键),是autoincrement(自增)的。

    编写完数据表对象后,点击Android studio的build->Make Project(Mac的童鞋直接command+F9)就会使用apt进行了编译,

    查看目录

    app/build/generated/source/apt/debug/com/mei_husky/sample_dbflow/db/model

    就可以看到自动生成 RewardModel_Adapter、RewardModel_Container、RewardModel_Table,其中RewardModel_Table在后面使用有很大的作用,不妨详细看看它的结构

    4.数据的增删改查

    1.insert,delete,update(增、删、改)

     private void insertModel() {
         RewardModel rewardModel = new RewardModel();
         rewardModel.name = "脆脆鲨";
         rewardModel.count = 20;
         rewardModel.all_count = 20;
         rewardModel.probability = 0.3f;
         rewardModel.iamge_res = R.mipmap.ic_launcher;
         rewardModel.save(); //增
         //rewardModel.delete();//删
         //rewardModel.update();// 改
     }

    可以看到,增删改的操作都很简单,很好上手。此外,当一次要处理的数据量较大时,我们可以依赖DBFlow的事务类进行批量处理:

    //大量数据保存
    ArrayList<RewardModel> rewardModels = new ArrayList<>();
    SaveModelTransaction<RewardModel> transaction = new SaveModelTransaction<RewardModel>               (ProcessModelInfo.withModels(rewardModels));
    //同步保存
    transaction.onExecute();
    //异步保存
    TransactionManager.getInstance().addTransaction(transaction);  

    2.数据查询

    private void queryModel() {
        //单个查询
        RewardModel rewardModel = new Select().from(RewardModel.class).querySingle();  
        //返回所有查询结果
        List<RewardModel> rewardModels = new Select().from(RewardModel.class).queryList();  
        //条件查询list
        List<RewardModel> modelList = new Select().from(RewardModel.class).where(Condition.column(RewardModel$Table.ID).is(1)).queryList();
    }

    注意多个条件查询只需要在where()中添加相对应个数的查询条件即可,比如:

    List<RewardModel> modelList = new Select()
                    .from(RewardModel.class)
                    .where(Condition.column(RewardModel$Table.ID).is(1),
                            ...,//若干查询条件
                            ...,
                            ...,
                            Condition.column(RewardModel$Table.NAME).is("脆脆鲨"))
                    .queryList();

    5.总结

    本文只是笔者学习DBFlow时写下的学习笔记,此外DBFlow还有很多很强大的特性,比如对kotlin语言的支持,多数据库支持等,相对于Android原生自带的SQLite确实方便很多,强烈推荐大家学习使用。

    网赌被黑找腾龙D哥出黑【微信:gm4927 QQ:861122225】

    发布评论

    分享到:

    专业出黑网赌被黑追款

    我的微信号:18488351249 (左侧二维码扫一扫)欢迎添加!

    Java并发编程艺术----读书笔记(二)
    你是第一个吃螃蟹的人
    发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。