Android greenDao

简介: Android greenDao

一、greenDao简介

greenDAO是一个开源的Android ORM(对象-关系映射),它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。

二、greenDAO优点

最佳性能 (可能是 Android 中最快的 ORM) ,基准测试也是开源的;

易于使用的功能强大的 api,涵盖关系和连接;

最小的内存消耗;

小型库大小(< 100KB) ,以保持较低的构建时间,并避免65k 方法限制;

数据库加密:greenDAO 支持 SQLCipher 来保证用户数据的安全;

强大而活跃的社区交流支持,相关资料比较完善;

许多顶级的Android应用程序都依赖greenDAO,其中一些应用程序的安装量超过1000万,更证明了其可靠性

三、greenDao 的简单使用

1.project的build.gradle 下配置

  dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
       
    }

2.app的build.gradle 下配置

 
plugins {
    id 'com.android.application'
    id 'org.greenrobot.greendao' //新加入
}
 
android {
    compileSdk 31
 
    defaultConfig {
        applicationId "com.example.greendao"
        minSdk 29
        targetSdk 31
        versionCode 1
        versionName "1.0"
 
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
    //新加入
    greendao {
        schemaVersion 1 //数据库版本号 每次升级数据库都需要改变版本,只能增加
        daoPackage 'com.example.greendao'  //设置DaoMaster、DaoSession、Dao包名
        targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
    }
}
 
dependencies {
    //新加入
    implementation 'org.greenrobot:greendao:3.2.2'
 
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

3、创建实体类

@Entity
public class Student {
    @Id
    private Long Id;
    private String name;
    private String major;
    private int age;
}

点击 make project按键生成代码

4.初始化数据库

public class MyApplication extends Application {
 
    //实例化DaoMaster对象
    private DaoMaster mDaoMaster;
    //实例化DaoSession对象
    private static DaoSession sDaoSession;
    private DaoMaster.DevOpenHelper mDevOpenHelper = null;
 
    @Override
    public void onCreate() {
        super.onCreate();
        // 1、获取需要连接的数据库
        mDevOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(),"student.db");
        // 2、创建数据库连接
        mDaoMaster = new DaoMaster(mDevOpenHelper.getWritableDb());
        // 3、创建数据库会话
        sDaoSession = mDaoMaster.newSession();
    }
    //通过此方法,操作数据库,进行增删改查
    public static DaoSession getDaoSession() {
        return sDaoSession;
    }
}

5.实现增删改查

mMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        StudentDao userDao = MyApplication.getDaoSession().getStudentDao();
        // insert
        mMainBinding.insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                userDao.insert(new Student(null,mMainBinding.name.getText().toString(),
                        mMainBinding.major.getText().toString()
                        ,Integer.parseInt(mMainBinding.age.getText().toString())));
            }
        });
 
        mMainBinding.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                userDao.deleteAll();
            }
        });
 
        mMainBinding.query.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<Student> students = userDao.loadAll();
                StringBuilder sb = new StringBuilder();
                for (Student s : students) {
                    sb.append(s.toString()).append("\n");
                }
                mMainBinding.content.setText(sb.toString());
            }
        });
 
 
        mMainBinding.update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<Student> list = userDao.queryBuilder().where(
                        StudentDao.Properties.Id.eq(1L)).list();
                if (list.size()>0){
                    list.get(0).setAge(35);
                    userDao.update(list.get(0));
                }
            }
        });

6.贴下 layout 布局

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
 
    <data>
 
    </data>
 
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
 
 
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/name"
            android:hint="请输入姓名"
 
            app:layout_constraintTop_toTopOf="parent" />
 
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/major"
            android:hint="请输入专业"
            app:layout_constraintTop_toBottomOf="@id/name" />
 
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入年龄"
            app:layout_constraintTop_toBottomOf="@id/major"
            android:id="@+id/age" />
 
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/insert"
            android:text="插入数据"
            app:layout_constraintTop_toBottomOf="@id/age"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            tools:ignore="MissingConstraints" />
 
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/delete"
            android:text="删除数据"
            tools:ignore="MissingConstraints"
            android:layout_marginTop="30dp"
            app:layout_constraintTop_toBottomOf="@id/insert" />
 
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/update"
            android:text="修改数据"
            tools:ignore="MissingConstraints"
            app:layout_constraintTop_toBottomOf="@+id/delete" />
 
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/query"
            android:text="查询数据"
            app:layout_constraintTop_toBottomOf="@+id/update"
            tools:ignore="MissingConstraints" />
 
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/content"
            app:layout_constraintTop_toBottomOf="@id/query" />
 
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>


目录
相关文章
|
4天前
|
SQL 缓存 安全
Android ORM 框架之 greenDAO
Android ORM 框架之 greenDAO
38 0
|
1天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
175 0
android 多级下拉菜单实现教程 greendao使用
|
SQL 数据库 Android开发
Android greenDAO 3.2.2简单使用
Android greenDAO 3.2.2简单使用
242 0
|
存储 缓存 JSON
RxCache 整合 Android 的持久层框架 greenDAO、Room
RxCache 整合 Android 的持久层框架 greenDAO、Room
229 0
RxCache 整合 Android 的持久层框架 greenDAO、Room
|
API 数据库 Android开发
Android GreenDao的基本使用
Android GreenDao的基本使用
414 0
Android  GreenDao的基本使用
|
缓存 Java 数据库
Android之greenDao使用
Android之greenDao使用文章大纲一、greenDao简介二、greenDao实战三、项目源码下载四、参考文章 一、greenDao简介 什么是greenDao  GreenDAO是一个开源的Android ORM(“对象/关系映射”),通过ORM(称为“对象/关系映射”),在我们数据库开发过程中节省了开发时间。
3690 0
|
API 数据库 Android开发
Android--数据库GreenDao使用
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/80228390 一、简介 greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。
1322 0
|
SQL Java 数据库
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包 但是对于我个人来说,我可能更加倾向于用GreenDao,所以今天也为.
1417 0