开源框架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);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷积神经网络

你的支持是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值