栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android greenDao

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 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 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 布局




    

    

    


        

        

        

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号