GreenDao的使用

LitePal数据库的使用

======================================

前言

因为项目需求的需要,会有用到数据库的需求,大家真知道安卓自带sqlLite 数据库,这种数据库的特点是轻小快速,能满足大部分安卓项目的需求,但是自己编写sql语句,难免会犯一些问题,并且对于数据量比较多的话,性能也是一个需要考虑的因素,我们公司的项目需要插入的数据有接近上万条,对于性能的要求还是比较高的,目前的话也有很多ORM型数据库可供开发者选择,目前最火的两种数据库框架比如LitePal,GreenDao,,两种数据库都是支持异步,相对而言litePal的配置要稍麻烦,本文详细介绍GreenDao数据库的使用

GreenDao的简单介绍

  • 优点

    性能最大化,内存开销最小化;
    易于使用的API;
    为Android进行高度优化;
    异步操作,性能优化好;
    多对一,一对多支持较好,这也是我选择它的主要原因

  • 依赖导入

    project gradle 配置

        >  dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3'
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' // add plugin
                         }
    

    module gradle 配置

        >    compile 'org.greenrobot:greendao:3.2.0'
             compile 'org.greenrobot:greendao-generator:3.2.0'
    
    
         >  apply plugin: 'org.greenrobot.greendao'
    
    
    以下是自动生成java文件的配置,(如果不想每次都生成可以注释掉)
    
    
          > java.srcDirs = ['src/main/java', 'src/main/java-gen']
    

    OK 写好Bean 然后manke project 就可以生成一些文件啦

基本的操作语法

.Entity 生成的表明

       class 加     @Entity

. 必须要有个Id属性 且是String类型

     >  @Id
        private String Id; //seriesCode 作为主键

. 一对多,多对一

       >      @ToMany(referencedJoinProperty = "leaderId")
          private List<MovieBean> movieBeanList; //ALL TS 集

          private String leaderId; // ToMany  一对多外键

在一Entit实例中ToMany中声明一个名字如learerId, 在另外一个Entity实例中加一个leaderId,就行啦

. 自定义字段类型

            > GreenDao数据库支持八大基本数据库类型,也支持自定义类型 如下:加Convert

  public static class StateConverter implements PropertyConverter<HttpHandler.State, Integer> {
    //将Integer值转换成HttpHandler.State值
    @Override
    public HttpHandler.State convertToEntityProperty(Integer databaseValue) {
        if (databaseValue == null) {
            return null;
        }
        for (HttpHandler.State state : HttpHandler.State.values()) {
            if (state.value() == databaseValue) {
                return state;
            }
        }
        return HttpHandler.State.WAITING;
    }

    //将HttpHandler.State值转换成Integer值
    @Override
    public Integer convertToDatabaseValue(HttpHandler.State entityProperty) {
        return entityProperty == null ? null : entityProperty.value();
    }
}

创建数据库

 >   DatabaseContext databaseContext = new DatabaseContext(mContext, dir);
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(databaseContext, "4k.db", null);
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
        m3u8Dao = daoSession.getM3U8BeanDao();
        TSDao = daoSession.getMovieBeanDao();

over 完事

..异步操作

  m3u8Dao.getSession().startAsyncSession().insertOrReplaceInTx(M3U8Bean.class, m3u8Bean);
   其他的增删非常简单就不介绍了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值