首页 > 代码库 > 开源框架GreenDao的操作

开源框架GreenDao的操作

1.为什么需要GreenDao?Google原生API不方便

@1手动组拼SQL语句

@2需要自己写操作数据库代码

@3不能把数据库中的数据映射成对象

@4没有实现关联查询

2.GreenDao是什么?

技术分享

开源的数据库操作框架,让操作数据库变为操作对象

3.GreenDao的优点?

@1让业务代码访问对象,而不是操作数据库表

@2隐藏了面向对象的逻辑SQL查询详情

@3无须处理数据库实现

4.ANDROID主流ORM框架

@1 OrmLite

@2 SugarORM

@3 LitePal

@4 GreenDao

.技术分享

5.GreenDao自动生成代码

@1创建java工程,引入两个jar包

技术分享

@2创建类,引入代码如下

import java.io.IOException;

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

public class GenerateGreenDao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        

        Schema schema = new Schema(1, "de.greenrobot.daoexample");//第一个参数:版本号,第二个参数生成的代码的包名
         
        Entity note= schema.addEntity("Person");//生成的表名
        note.addIdProperty();//增加id字段
        note.addStringProperty("name").notNull();//增加name字段
        note.addIntProperty("age");//增加age字段
        note.addStringProperty("sex");//sex字段
        note.addDateProperty("date");//date字段
         
        try {
            new DaoGenerator().generateAll(schema, "../greendaogenerate/src");
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

@3编译并运行上述代码,查看结果,生成四个类,以后需要将这四个类拷贝到android工程中

技术分享

技术分享

 

 6.使用GreenDao的API

@1初始化数据库

    private void openDB() {
    // do this once, for example in your Application class
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this, "person.db", null);
        db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    // do this in your activities/fragments to get hold of a DAO
        dao = daoSession.getPersonDao();
    }

@2增加

   //增加
    public void save(){
        //要插入的对象
        Person person = new Person(Long.valueOf(1),name.getText().toString(),Integer.valueOf(age.getText().toString()),"women",new Date());
        //执行插入
        dao.insert(person);
        //清空输入框
        name.setText("");
        age.setText("");
        Log.i("person","personid"+person.getId());
    }

 

@3修改

    public void update(Person p){
        dao.insertOrReplace(p);
    }

 

@4删除

    public void delete(Person p){
        dao.delete(p);
    }

 

@5查询

    //查询所有
    public void getAll(){
        List<Person> list = dao.queryBuilder().list();
        for(Person p:list){
            Log.v("Person",p.toString());
        }
        Person person = list.get(0);
        person.setSex("man");
        update(person);

    }

 

开源框架GreenDao的操作