GreenDAO的简单使用

这两天做实验室的android项目,设计到sqlite数据库。一共有十几个表都要用sqlite数据库做,想起sqlite的复杂,顿时压力好大。赶快上网上看看有没有什么解决办法。经过一番查找,发现GreenDAO这个工具,它是一个基于sqlite的ORM框架,目的是为让开发人员减少sqlite的繁琐。

感觉网上的博客等过于繁琐,不利于使用,特此简化一下,可以直接使用,如果想深入了解的码农,可以去GreenDAO简明教程看看,也可以去官网深入学习一下。
其实GreenDAO非常简单,就是把要存储的表都变成一个个实体。
这是我的测试代码

使用过程大概分为以下两部分:
一、数据库生成
1.创建一个java工程
这里写图片描述

package cn.blunce.person_db_gen;

import java.io.IOException;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class PersonDBGen {

    public static void main(String[] args) throws IOException, Exception {
        // TODO Auto-generated method stub
        Schema schema = new Schema(1, "cn.blunce.app.models");

        addPerson(schema);

        new DaoGenerator().generateAll(schema, "../PersonDBTest/src");
    }

    private static void addPerson(Schema schema) {
        // TODO Auto-generated method stub
        Entity person = schema.addEntity("Person");
        person.addIdProperty();
        person.addStringProperty("name");
        person.addStringProperty("birthday");
    }

}

Schema schema = new Schema(1, "cn.blunce.app.models");这句第一个参数可以随便设置,第二个参数是产生的代码所存放的包名,addPerson(schema)这句详细下面再说,其实就是将实体添加到数据库中,new DaoGenerator().generateAll(schema, "../PersonDBTest/src")这句的第一个参数没什么好说的,第二个参数是产生的代码存放的目录,和linux下的目录表示方法差不多。

2.添加表

在这个函数

    private static void addPerson(Schema schema) {
        // TODO Auto-generated method stub
        Entity person = schema.addEntity("Person");
        person.addIdProperty();
        person.addStringProperty("name");
        person.addStringProperty("birthday");
    }

中,Entity person = schema.addEntity("Person");Person是要添加的表名,person.addIdProperty();一般都添加,person.addStringProperty("name");添加各种属性,name是属性名,也可以添加double,和int型的属性。

3.生成数据库
直接运行,就会在相应的目录生成
这里写图片描述
**注意目的目录一定要已经创建好,否则会报错。

二、数据库使用
在使用之前一定要初始化一下,这步不可缺少。

        DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "person-db",null);
        SQLiteDatabase mDatabase =helper.getWritableDatabase();
        DaoMaster mDaoMaster = new DaoMaster(mDatabase);
        DaoSession mDaoSession = mDaoMaster.newSession();
        PersonDao mPersonDao = mDaoSession.getPersonDao();
        // 1.增加记录
        Person person1 = new Person(null, "a", "1010");
        Person person2 = new Person(null, "b", "1011");

        mPersonDao.insert(person1);
        mPersonDao.insert(person2);

        // 2.删除记录
        mPersonDao.delete(person1);

        // 3.更改记录
        person1.setBirthday("fjadklsjfak");
        mPersonDao.insertOrReplace(person1);

        // 4.查找记录
        List<Person> persons = mPersonDao.queryBuilder()
                .where(Properties.Name.eq("a")).list();
        // List<Person> persons = mPersonDao.loadAll();
        Log.i("QueryTest", persons.get(0).getBirthday());

过程中要使用的jar包:下载地址


关于自定义代码的使用:
GreenDAO产生的代码估计很少会改,要改也是改哪些名字里不含有Dao的文件。

// KEEP INCLUDES - put your custom includes here
// KEEP INCLUDES END

这是导入包的时候添加的。

// KEEP FIELDS - put your custom fields here
// KEEP FIELDS END

这是自添加定义变量的时候添加的,还在试验,估计是这个作用。

// KEEP METHODS - put your custom methods here
// KEEP METHODS END

这是添加自定义方法的时候添加的。当让还有一个东西要添加就是schema.enableKeepSectionsByDefault();别忘记在生成程序里添加。


假设要把其它的属性设置成主键,就把person.addIdProperty();的属性删除。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值