Android中的ORM介绍及GreenDao使用

1、ORM
这里写图片描述

2、ORM开源库对比
这里写图片描述

3、GreenDAO
地址:https://github.com/greenrobot/greenDAO
特点:轻量,API易于使用,性能较优,对象关系配置简单

4、表结构
这里写图片描述

5、对象生成
这里写图片描述

6、示例代码
(1)加入依赖,插件,最好3.0以上的版本

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.0.+'
    compile 'org.greenrobot:greendao:3.0.1'
}
apply plugin: 'org.greenrobot.greendao'

(2)生成表,确保表的版本

@Entity
public class Contact {
    @Id(autoincrement = true)//c此为greendao数据库表的id
    private Long id;
    @NotNull
    private String uid;
    private String yid;

    private int gender;

    private String mobile;

    private String photourl;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Property(nameInDb = "nickname")//数据库表名是什么
greendao{
    schemaVersion 1
    daoPackage 'com.netease.study.io.orm'
    targetGenDir 'src/main/java'
}

(3)、生成类
Openhelper

/**
 * openHelper只建议在开发情况使用,因为Greendao的openhelper在升级时删除全部的表
 * 
 */
public class MySqlOpenHelper extends DaoMaster.OpenHelper {
    public MySqlOpenHelper(Context context, String name) {
        super(context, name);
    }


    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {

    }
}

生成OrmHelper

public class OrmHelper {
    private static OrmHelper instance;

    private DaoMaster daoMaster = null;
    private DaoSession daoSession = null;
    public static OrmHelper getInstance(Context context) {
        if(instance==null){
            instance = new OrmHelper(context);
        }
        return instance;
    }
    public OrmHelper(Context context){
        MySqlOpenHelper openHelper = new MySqlOpenHelper(context,"ORMDB");
        daoMaster = new DaoMaster(openHelper.getWritableDatabase());
        daoSession = daoMaster.newSession();
    }
    //插入联系人
    public void insertContacts(List<Contact> lists){
      ContactDao contactDao =  daoSession.getContactDao();
        contactDao.insertInTx(lists);
    }
    //查询联系人
    public List<Contact> queryContacts(int offset,int limit){
        ContactDao contactDao =  daoSession.getContactDao();
        Query<Contact> query =  contactDao.queryBuilder().orderDesc(ContactDao.Properties.Id).offset(offset).limit(limit).build();
        return query.list();

    }

}

(4)异步查询

    List<Contact> results;
    //异步查询
    public List<Contact> queryAsync(int offset,int limit){

        ContactDao contactDao =  daoSession.getContactDao();
        Query<Contact> query =  contactDao.queryBuilder().orderDesc(ContactDao.Properties.Id).offset(offset).limit(limit).build();
        AsyncSession asyncSession= daoSession.startAsyncSession();
        asyncSession.setListener(new AsyncOperationListener() {
            @Override
            public void onAsyncOperationCompleted(AsyncOperation operation) {
                //查询结果
                results=(List<Contact>)operation.getResult();
            }
        });

        return results;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值