IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 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>

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:03:58  更:2022-07-04 23:05:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:48:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码