美文网首页
Android GreenDao 3.3.0使用

Android GreenDao 3.3.0使用

作者: 里予心 | 来源:发表于2021-08-20 15:16 被阅读0次

目前最新版本是3.3.0
github地址https://github.com/greenrobot/greenDAO

在project gradle中 加入mavenCentral()
在dependencies 下加入classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
完整配置如下

buildscript {
    repositories {
        //GreenDao
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.1"
        //GreenDao
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

然后在module build.gradle中顶部添加

apply plugin: 'org.greenrobot.greendao'

依赖添加

 implementation 'org.greenrobot:greendao:3.3.0'

以上gradle配置完成以后就可以使用greendao了

新建一个bean目录,目录下新建一个bean文件

@Entity
class MySports {
    //@Id:主键,通过这个注解标记的字段必须是Long类型的,这个字段在数据库中表示它就是主键,并且它默认就是自增的
    @Id(autoincrement = true)
    private Long id;
    private String longitude;
    private String latitude;
    private String loction;
    private long distance;
}

构建(Make Project)一下,然后就可以看到自动扩充了,生成了greendao目录

完整目录如下图 WechatIMG3317.jpeg
在App中初始化greendao
public class App extends Application {
    private static final String DB_NAME = "mysports.db";
    private static DaoSession mDaoSession;
    @Override
    public void onCreate() {
        super.onCreate();
        initGreenDao();
    }

    private void initGreenDao() {
        DaoMaster.DevOpenHelper helper = new      DaoMaster.DevOpenHelper(this, DB_NAME);
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        mDaoSession = daoMaster.newSession();
    }

    public static DaoSession getmDaoSession() {
        return mDaoSession;
    }
}

增,删,改,查操作

     /**
     * 插入1w条数据
     */
    public void greenDaoInsert() {
        List<MySports> mySportsList = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            MySports mySports = new MySports();
            mySports.setId((long)(1000000000+i));
            mySports.setLatitude("40.60190744137565");
            mySports.setLongitude("116.397128");
            mySports.setLoction("上海市浦东区"+i);
            mySports.setDistance(10000+i);
            mySportsList.add(mySports);
        }
        long startTime = System.currentTimeMillis();
        App.getmDaoSession().getMySportsDao().insertInTx(mySportsList);
        long endTime = System.currentTimeMillis();
        long takeTime = endTime - startTime;
        tv_title.setText("greendao插入1w条数据耗时:"+takeTime);
    }

    /**
     * 查询数据
     */
    public void greenDaoQuery() {
        long startTime = System.currentTimeMillis();
        List<MySports> datas = App.getmDaoSession().getMySportsDao().queryBuilder().list();
        long endTime = System.currentTimeMillis();
        long takeTime = endTime - startTime;
        tv_title.setText("greendao查询1w条数据耗时:"+takeTime+"ms");
    }

    /**
     * 更新数据
     */
    public void greenDaoUpdate() {
        List<MySports> datas = App.getmDaoSession().getMySportsDao().queryBuilder().list();
        for (MySports data : datas) {
            data.setLoction("陕西省西安市");
        }
        long startTime = System.currentTimeMillis();
        App.getmDaoSession().getMySportsDao().updateInTx(datas);
        long endTime = System.currentTimeMillis();
        long takeTime = endTime - startTime;
        tv_title.setText("greendao更新1w条数据耗时:"+takeTime+"ms");
    }
    /**
     * 删除
     * @param id
     * @param mySports
     */
    public void greenDaoDelete(long id,MySports mySports) {
        App.getmDaoSession().getMySportsDao().deleteByKey(id);
        //App.getmDaoSession().getMySportsDao().delete(mySports);
        //App.getmDaoSession().getMySportsDao().deleteAll();
    }

GreenDao的优点
~增删改查耗时短
~依赖库很小
~支持数据库加密
~自动生成代码
~不必写原始的SQL语句,只需要在bean文件中添加需要的字段即可

相关文章

网友评论

      本文标题:Android GreenDao 3.3.0使用

      本文链接:https://www.haomeiwen.com/subject/tijtiltx.html