Android greenDAO使用方法解析

greenDAO在Android开发中提供了一个面向对象的数据接口,使用过程中只需要定义数据原型,greenDao将为你自动创建数据原型及DAOs (data access objects),方便开发者对SQLite进行操作。

1. 下载开源工程

官网文档:http://greenrobot.org/greendao/documentation/how-to-get-started/
下载地址:https://github.com/greenrobot/greenDAO
下载gitHub上的开源工程,我们用到的其实只有三个文件夹下的东西:
这里写图片描述
1) DaoGenerator:Java用在java工程里,生成建数据原型及DAOs ;
2)DaoCore:Android工程里需要导入,用于对生成的greenDao数据进行操作;
3)DaoExample:里面有个例程,教你如何在Android工程里使用greenDao。

2. 创建Java工程,生成greenDao相关代码

1)新建一个Java工程,添加自己的代码,我这里是TestDaoGenerator,程序里PACK_NAME即生成的Java文件的包名,GEN_DAO_FILE为所生成的Java文件所在的文件夹;
2)将DaoGenerator里面src\de\greenrobot\daogenerator目录下的文件拷贝到工程src目录下;
3)导入freemarker.jar的jar包;
4)新建src-template目录,导入DaoGenerator里面src-template目录下的.ftl文件。
这里写图片描述

/**
 * Generates test entities for test project DaoTest.
 *
 * @author Markus
 */
public class TestDaoGenerator {
    //生成文件的包名
    private final static String PACK_NAME="com.pigrush.daogen";
    //生成文件所在目录
    private final static String GEN_DAO_FILE="../DaoTestBase";

    private final Schema schema;

    public static void main(String[] args) throws Exception {
        TestDaoGenerator testDaoGenerator = new TestDaoGenerator();
        testDaoGenerator.generate();
    }

    public TestDaoGenerator() {
        schema = new Schema(1,PACK_NAME);
        createSimple();
    }

    public void generate() throws Exception {
        DaoGenerator daoGenerator = new DaoGenerator();
        File genFileDir=new File(GEN_DAO_FILE);
        if(!genFileDir.exists()){
            genFileDir.mkdirs();
        }
        daoGenerator.generateAll(schema, GEN_DAO_FILE);
    }

    protected void createSimple() {
        Entity simple = schema.addEntity("SimpleEntity");
        simple.addIdProperty().autoincrement();
        simple.addBooleanProperty("simpleBoolean");
        simple.addByteProperty("simpleByte");
        simple.addShortProperty("simpleShort");
        simple.addIntProperty("simpleInt");
        simple.addLongProperty("simpleLong");
        simple.addFloatProperty("simpleFloat");
        simple.addDoubleProperty("simpleDouble");
        simple.addStringProperty("simpleString");
        simple.addByteArrayProperty("simpleByteArray");
        simple.addContentProvider().readOnly();
    }
}

注:如果报错:Exception in thread “main” freemarker.template.TemplateNotFoundException: Template not found for name “dao.ftl”.,是因为没找到src-template目录下的.ftl文件。
解决方法:找到DaoGenerator.java,在DaoGenerator()函数config.setClassForTemplateLoading(this.getClass(), “/”);代码下面加入以下两行: FileTemplateLoader templateLoader = new FileTemplateLoader(new File(“src-template”)); config.setTemplateLoader(templateLoader);
这里写图片描述
编译,即可在Java工程所在文件夹下生成相关Java文件。
这里写图片描述

3. 将DaoCore生成Jar包

为使用方便,将DaoCore生成Jar包,新建一个Android工程,将DaoCore里面的Java文件拷贝到新建的工程下,如下图所示。生成Jar包即可
这里写图片描述

4. 新建Android测试工程

新建测试工程,用来测试生成的greenDao。
这里写图片描述
1) 将2生成的greenDao的Java文件导入工程;
2)导入3生成的daoCore.jar;
3)为操作方便,我这里新建了一个DaoOper。代码如下:

public class DaoOper {

    private final static String DB_NAME="hudVersion";
    private DaoMaster.DevOpenHelper helper;
    private DaoMaster daoMaster;
    private DaoSession daoSession;
    private SimpleEntityDao test1Dao;

    private static DaoOper _instance;

    public static DaoOper getInstance(){
        if(_instance==null){
            _instance=new DaoOper();
        }
        return _instance;
    }

    public void initDao(Context context){
        helper = new DaoMaster.DevOpenHelper(context,DB_NAME,null);
        daoMaster = new DaoMaster(helper.getWritableDatabase());
        daoSession = daoMaster.newSession();
        test1Dao=daoSession.getSimpleEntityDao();
    }

    public SimpleEntityDao getTest1Dao(){
        return test1Dao;
    }
}

MainActiviy代码如下:

public class MainActivity extends Activity implements OnClickListener{

    private DaoOper mDaoOper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDaoOper.getInstance().initDao(this.getApplicationContext());
        findViewById(R.id.insert_data).setOnClickListener(this);
        findViewById(R.id.query_data).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.insert_data:
            SimpleEntity test1Data=new SimpleEntity();
            test1Data.setSimpleBoolean(false);
            test1Data.setSimpleByte((byte) 1);
            mDaoOper.getInstance().getTest1Dao().insert(test1Data);

            SimpleEntity test1Data2=new SimpleEntity();
            test1Data2.setSimpleBoolean(true);
            test1Data2.setSimpleByte((byte) 2);
            mDaoOper.getInstance().getTest1Dao().insert(test1Data2);
            break;
        case R.id.query_data:
            List<SimpleEntity> dataList=mDaoOper.getInstance().getTest1Dao().loadAll();
            Toast.makeText(MainActivity.this, "dataCount="+dataList.size(), Toast.LENGTH_SHORT).show();
            break;
        }
    }
}

Ok, that’s all, enjoy it.
工程源码地址:http://download.csdn.net/detail/guokehello/9502497

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值