android中ORM(对象关系映射)数据库greenDAO的使用

greenDao数据库的介绍
greenDao是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。


1、添加远程依赖
// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}
 
// In your app projects build.gradle file:
apply plugin'com.android.application'
apply plugin'org.greenrobot.greendao' // apply plugin
 
dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
}

2、创建实体类

注:entiy中是自己创建的实体类,gen是自动生成的

以下是OrganiztionInfo实体类示例:
@Entity
public class OrganizationInfo {

    @Id
    private Long id;

    @NotNull
    private String mobileNum;
    private String organization;
    private String organizationPhone;
    private String organizationProvince;
    private String organizationCity;
    private String OrganizationArea;
    private String detailOrganizationAddress;
    private String worktime;
    private String monthlyIncome;

greenDAO中的实体类通过注解来标识,常见的注解如下:
@Entity表示实体类
@Id表示主键
@NotNull表示不为空

3、编译自动生成相关文件DaoMater、DaoSession、OrganizationInfoDao
创建实体类后,点击编译,会自动生成DaoMater、DaoSession、OrganizationInfoDao这几个文件


4、初始化数据库
在Application的onCreate中初始化数据库,代码如下:
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(mContext"baidaibao-db");
Database db = helper.getWritableDb();
daoSession new DaoMaster(db).newSession();

提供一个共有方法,得到DaoSession
public DaoSession getDaoSession() {
    return daoSession;
}


5、从数据库中查询数据,①得到daoSession,②通过daoSession得到OrganizationInfoDao,③ OrganizationInfoDao .queryBuilder().build().list()方法查询数据,代码如下:
    /**
     * 查询保存的工作信息
     */
    private void queryOrganizationInfo() {
        DaoSession daoSession = ((MyApplication) getApplication()).getDaoSession();
        mOrganizationInfoDao = daoSession.getOrganizationInfoDao();
//        List<OrganizationInfo> organizationInfoList = mOrganizationInfoDao.queryBuilder().build().list();
        List<OrganizationInfo> organizationInfoList = mOrganizationInfoDao.queryBuilder().where(OrganizationInfoDao.Properties.MobileNum.eq(DataWareHouse.getMobileNum())).orderAsc(OrganizationInfoDao.Properties.Id).build().list();
        if (organizationInfoList.size() > 0) {
            int i = organizationInfoList.size() - 1;
            mEtOrganization.setText(organizationInfoList.get(i).getOrganization());//单位名称
            mEtOrganizationPhone.setText(organizationInfoList.get(i).getOrganizationPhone());//单位号码
            organizationProvince = organizationInfoList.get(i).getOrganizationProvince();//省
            organizationCity = organizationInfoList.get(i).getOrganizationCity();//市
            organizationArea = organizationInfoList.get(i).getOrganizationArea();//区
            mSelectJobAddress.setText(organizationProvince organizationCity organizationArea);
            mEtDetailOrganizationAddress.setText(organizationInfoList.get(i).getDetailOrganizationAddress());//详细地址
            mSelectWorktime.setText(organizationInfoList.get(i).getWorktime());
            mEtMonthlyIncome.setText(organizationInfoList.get(i).getMonthlyIncome());
        }
    }
注:where条件选择 ,OrganizationInfoDao.Properties.MobileNum.eq("10086")表示将10086的手机号查询出来
orderAsc升序排序,orderAsc(OrganiztionInfoDao.Properties.Id)表示按照Id升序排序

6、保存数据库 同上面一样,首先要得到daoSession,通过daoSession得到OrganizationInfoDao,调用OrganizationInfoDao.insert()保存数据,代码如下:
/**
 * 将数据保存到数据库中
 */
private void save2Database() {
    OrganizationInfo organizationInfo = new OrganizationInfo(null, DataWareHouse.getMobileNum()organizationorganizationPhoneorganizationProvinceorganizationCityorganizationAreadetailOrganizationAddressselectWorkTimemonthlyIncome);
    mOrganizationInfoDao.insert(organizationInfo);
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值