《Android greenDao快速使用1——接入》

一、环境

Android中提供了一个占用内存极小的关系型数据库SQLite,常规的编写SQL语句,特别的麻烦,并且容易出错。所以现在出现了许多ORM(对象关系映射)框架。其中比较著名的有Greendao、OrmLite、Litepal等。

GreenDao简介:

greendao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。GreenDao是使用ORM对象关系映射,就是通过GreenDao将数据库和bean关联起来有以下优点:

1.存取速度快;

2.支持数据库加密;

3.轻量级;

4.激活实体;

5.支持缓存;

6.代码自动生成;

二、源码地址:

https://github.com/greenrobot/greendao

三、接入配置

1.在project中的build中添加如下代码

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0' //greendao
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

再在Module中的build添加引用

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' //此处需要添加
android {
    compileSdkVersion 25
    buildToolsVersion "27.0.1"

    defaultConfig {
        applicationId "com.xs.laizhen.visit"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        flavorDimensions "versionCode"
        multiDexEnabled true
        //android studio3.0  butterknife:5.1.1报错问题。
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
        //bugly调试时需要注释掉
        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'x86'
        }
    }

    //greendao配置
    greendao {
        schemaVersion 1 //版本
        daoPackage 'com.xs.laizhen.visit.greendao' //指定路径
        targetGenDir 'src/main/java' //目标目录
    }
}


repositories {
    flatDir {
        dirs 'libs'
    }
    google()
}


dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.jakewharton:butterknife:5.1.1'

    //greendao数据库
    compile 'org.greenrobot:greendao:3.1.0'
    compile 'org.greenrobot:greendao-generator:3.1.0'
}

四、代码

(一)实体类

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;

/**
 * Created by Laizhen on 2018/2/1.
 */
@Entity
public class User {
    @Id
    private String userId; //唯一id号
    private String name; //姓名
    private String gender; //性别
    private String ethnic; //民族
    private String birthday; //生日
    private String idCard; //身份证号码
    private String organ; //签发机关
    private String term; //有效期限
    private String address; //家庭住址
    private String phone; //手机号码
    private String visitingTime; //来访时间
    private String idCardPhoto; //身份证头像
    private String facePhoto; //人脸照片
    private String originalPhoto; //原图照片
    private String flag; //记录上否上传 0未上传;1已上传
    public String getFlag() {
        return this.flag;
    }
    public void setFlag(String flag) {
        this.flag = flag;
    }
    public String getOriginalPhoto() {
        return this.originalPhoto;
    }
    public void setOriginalPhoto(String originalPhoto) {
        this.originalPhoto = originalPhoto;
    }
    public String getFacePhoto() {
        return this.facePhoto;
    }
    public void setFacePhoto(String facePhoto) {
        this.facePhoto = facePhoto;
    }
    public String getIdCardPhoto() {
        return this.idCardPhoto;
    }
    public void setIdCardPhoto(String idCardPhoto) {
        this.idCardPhoto = idCardPhoto;
    }
    public String getVisitingTime() {
        return this.visitingTime;
    }
    public void setVisitingTime(String visitingTime) {
        this.visitingTime = visitingTime;
    }
    public String getPhone() {
        return this.phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return this.address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getTerm() {
        return this.term;
    }
    public void setTerm(String term) {
        this.term = term;
    }
    public String getOrgan() {
        return this.organ;
    }
    public void setOrgan(String organ) {
        this.organ = organ;
    }
    public String getIdCard() {
        return this.idCard;
    }
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    public String getBirthday() {
        return this.birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public String getEthnic() {
        return this.ethnic;
    }
    public void setEthnic(String ethnic) {
        this.ethnic = ethnic;
    }
    public String getGender() {
        return this.gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUserId() {
        return this.userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    @Generated(hash = 593467924)
    public User(String userId, String name, String gender, String ethnic,
            String birthday, String idCard, String organ, String term,
            String address, String phone, String visitingTime, String idCardPhoto,
            String facePhoto, String originalPhoto, String flag) {
        this.userId = userId;
        this.name = name;
        this.gender = gender;
        this.ethnic = ethnic;
        this.birthday = birthday;
        this.idCard = idCard;
        this.organ = organ;
        this.term = term;
        this.address = address;
        this.phone = phone;
        this.visitingTime = visitingTime;
        this.idCardPhoto = idCardPhoto;
        this.facePhoto = facePhoto;
        this.originalPhoto = originalPhoto;
        this.flag = flag;
    }
    @Generated(hash = 586692638)
    public User() {
    }
    

}

对Bean中的对象进行解释

1.@Entity:告诉GreenDao该对象为实体,只有被@Entity注释的bean类才能被dao类操作;

2.@Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值;

3.@Property 可以自定义字段名,注意外键不能使用该属性;

4.@NotNull:属性不能为空;

5.@Transient:使用该注释的属性不会被存入数据库的字段中;

6.@Unique:该属性值必须在数据库中是唯一值;

7.@Generated:编译后自动生成的构造函数、方法等的注解,提示构造函数,方法等不能被修改。

(二)创建数据库名称

public static DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
public static DaoMaster mDaoMaster;
private static DaoSession mDaoSession;
/**
 * 设置greenDao
 */
private void setDatabase() {
    // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。 
    // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。 
    // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。 
    // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。

    mHelper = new DaoMaster.DevOpenHelper(this, "Attendance-db", null);
    db = mHelper.getWritableDatabase();
    // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 
    mDaoMaster = new DaoMaster(db); 
    mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() { 
    return mDaoSession;
}

上述配置完成后,Build-->Make Project 就会自动生成UserDao、DaoSession、DaoMaster文件。

到这就创建数据库完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值