GreenDao

原创
2017/01/20 16:06
阅读数 121

1.先添加依赖

第一步:在app的Build.gradle中添加如下配置:

apply plugin: 'org.greenrobot.greendao'
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
greendao{
    schemaVersion 1
    daoPackage 'com.admom.mygreendaotest.gen'
    targetGenDir 'src/main/java'
}
//schemaVersion: 数据库schema版本,也可以理解为数据库版本号
//daoPackage:设置DaoMaster、DaoSession、Dao包名
//targetGenDir:设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例

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

    compile 'org.greenrobot:greendao:3.2.0'
}

在工程的Build.gradle中添加如下配置:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
    }
}

###2. 写一个实体类,点击绿色的锤子按钮,编译生成DaoMaster、DaoSeesion、ShopDao

例如:

@Entity
public class shop{
     @Id
    private Long id;//注意id主键必须用Long类型
    private String name;
}

3.在MyApplication初始化GreenDao

public class MyApplication extends Application {

    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster daoMaster;
    private DaoSession daoSession;

    public static MyApplication instances;

    @Override
    public void onCreate() {
        super.onCreate();
        instances = this;
        setDataBase();
    }

    public static MyApplication getInstances(){
        return instances;
    }

    private void setDataBase() {
        mHelper = new DaoMaster.DevOpenHelper(this,"notes-db",null);
        db = mHelper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }

    public DaoSession getDaoSession(){
        return daoSession;
    }

    public SQLiteDatabase getDb(){
        return db;
    }

}

4.调用数据库的语句

 private void searchData() {
        List<Shop> shops = shopDao.loadAll();
        String name = "";
        for (Shop s : shops) {
            name = s.getName() + ";";
        }
        result.setText(name);
    }

    private void updataData() {
        shop = new Shop((long) 22, "aaa");
        shopDao.update(shop);
    }

    private void deleteData() {
        shopDao.deleteByKey((long) 1);
    }

    private void addData() {
        shop = new Shop((long) 1, "sss");
        shopDao.insert(shop);
    }

注解

@Entity                 实体注解
@NotNull              设置表中的当前列的值不为空
@Convert             制定自定义类型
@Generated        GreenDao运行所产生的构造函数或者方法,被此标注的代码可以更新或者下次运行时清除
@Id                       主键Long型,可以通过@Id(autoincrement = true)设置自增长,通过这个注解标记的字段必 须是long,数据库中表示它就是主键,并且默认为自增长
@Index                 使用@Index作为一个属性累创建一个索引,定义多列索引(@Iink Entity#indexes())
@JoinEntity         定义表连接关系
@JoinProperty    定义名称和引用名称属性关系
@Keep                 注解的代码在GreenDao下运行时保持不变
                                      1.注解实体类:默认禁止修改此类
                                      2.注解其他代码,默认禁止修改注解的代码段
@Order                制定排序
@Property           设置一个非默认关系映射所对应的列名,默认使用的字段名。
                              例:@Property(nameInDb="name")
@ToMany            定义多个实体对应的关系
@ToOne              定义与另一个实体(一个实体对象)的关系
@Transient          添加该标记之后不会生成数据库表的列
@Unique              向数据库列添加一个唯一的约束
展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部