Android 数据库之GreenDAO

这篇具有很好参考价值的文章主要介绍了Android 数据库之GreenDAO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不再需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化,最小的内存开销 、依赖体积小 同时还是支持 数据库加密。

greenDAO 官网地址:greenDAO: Android ORM for your SQLite database - Open Source by greenrobot

greenDAO GitCode 源码地址:https://github.com/greenrobot/greenDAO

GreenDao 特征

    1、支持 protocol buffer(protobuf) 协议
    GreenDao 支持 protocol buffer(protobuf) 协议数据的直接存储,如果你通过 protobuf 协议与服务器交互,将不需要任何的映射
    2、代码生成
    greenDAO 会根据配置信息自动生成核心管理类以及 DAO 对象
    3、性能
    所有 ORM 数据库的,greenDAO 是最快的,greenDAO 不作性能方面任何妥协

核心类介绍
1、DaoMaster:

使用 greenDAO 的入口点。DaoMaster 负责管理数据库对象(SQLiteDatabase)和 DAO 类(对象),我们可以通过它内部类 OpenHelper 和 DevOpenHelper SQLiteOpenHelper 创建不同模式的 SQLite 数据库。
2、DaoSession :

管理指定模式下的所有 DAO 对象,DaoSession 提供了一些通用的持久性方法比如插入、负载、更新和删除实体。
3、XxxDAO :

对于每个实体类, greenDAO 都会生成一个与之对应 DAO 对象,如:User 实体,则会生成一个 UserDao 类
4、Entities:

可持久化对象。通常,实体对象代表一个数据库行,使用标准 Java 属性(如一个 POJO 或 JavaBean )

集成GreenDao

1、build.gradle(Module:app)中添加配置与依赖

(1)

apply plugin: 'org.greenrobot.greendao' //添加greendao apply plugin
android {
    *
    *
}

(2)

android {
    *
    *

 // greendao配置
    greendao {
        //数据库版本号,升级时修改
        schemaVersion 1
        //生成的DAO,DaoMaster和DaoSession的包路径。默认与表实体所在的包路径相同
        daoPackage 'com.chy.greendao'
        //生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
        targetGenDir 'src/main/java'
    }

}

(3)

//引入GreenDao数据库,存储数据
implementation 'org.greenrobot:greendao:3.3.0' // add library
//Gson依赖
implementation 'com.google.code.gson:gson:2.8.5'

2、build.gradle(Project:xxx)中添加配置

// 添加插件 更好支持GreenDao
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'

创建Myapplication类:

public class Myapplication extends Application {

    public static DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        initDb();
    }

    /**
     * 数据库初始化
     * */
    public void initDb () {
//        获取SQLiteOpenHelper对象devOpenHelper
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "mydb.db");
//        获取SQLiteDatabase
        SQLiteDatabase db = devOpenHelper.getWritableDatabase();
//        加密数据库(这句话无法运行)
        //Database database = devOpenHelper.getEncryptedWritableDb("12345");
        //DaoMaster daoMaster = new DaoMaster(database);
//        创建DaoMaster实例
//        DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的Dao类(而不是对象)。
//        它具有静态方法来创建表或将它们删除。
//        其内部类OpenHelper和DevOpenHelper是在SQLite数据库中创建模式的SQLiteOpenHelper实现。
         DaoMaster daoMaster = new DaoMaster(db);
//        管理特定模式的所有可用Dao对象
        daoSession = daoMaster.newSession();
    }



}

 在AndroidManifest.xml添加自定义的Myapplication

Android 数据库之GreenDAO,android,数据库

创建Entity

package com.chy.table;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;

@Entity(nameInDb = "patrol_table")
public class PatrolTable {

    /**
     * 主键 Long型,可以通过@Id(autoincrement = true)设置自增长。
     * 通过这个注解标记的字段必须是Long,数据库中表示它就是主键,并且默认是自增的。
     */
    @Id(autoincrement = true)
    private Long id;

    /**
     * Unique 属性给数据库的列添加了一个唯一性限制。注意,SQLite也会隐式地为它创建一个索引。
     * Property :属性指定数据库的字段名称。默认是驼峰转成大写的下划线隔开的名称,比如:UserAge 转成 USER_AGE
     */
    // @Unique
    @Property(nameInDb = "patroler_massif")
    private String patrolerMassif;// 巡查地块
    @Property(nameInDb = "patroler_person")
    private String patrolerPerson;// 巡查人员
    @Property(nameInDb = "patroler_time")
    private String patrolerTime;// 巡查时间
    @Generated(hash = 2022133330)
    public PatrolTable(Long id, String patrolerMassif, String patrolerPerson,
            String patrolerTime) {
        this.id = id;
        this.patrolerMassif = patrolerMassif;
        this.patrolerPerson = patrolerPerson;
        this.patrolerTime = patrolerTime;
    }
    @Generated(hash = 824963258)
    public PatrolTable() {
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getPatrolerMassif() {
        return this.patrolerMassif;
    }
    public void setPatrolerMassif(String patrolerMassif) {
        this.patrolerMassif = patrolerMassif;
    }
    public String getPatrolerPerson() {
        return this.patrolerPerson;
    }
    public void setPatrolerPerson(String patrolerPerson) {
        this.patrolerPerson = patrolerPerson;
    }
    public String getPatrolerTime() {
        return this.patrolerTime;
    }
    public void setPatrolerTime(String patrolerTime) {
        this.patrolerTime = patrolerTime;
    }

}

创建完entity,点击Make Project 如图所示:

Android 数据库之GreenDAO,android,数据库

如果配置正确,会在配置的包目录下自动会生成DaoMaster,DaoSession 和XXXDao 类 。

 Android 数据库之GreenDAO,android,数据库

定义GreenDaoManager类:

/**
 * 自定义Manager
 * */
public class GreenDaoManager {

    private Context mContext;
    private PatrolTableDao mPatrolTableDao;




    // 构造函数
    private GreenDaoManager(Context context){
        mContext = context;
        mPatrolTableDao = Myapplication.daoSession.getPatrolTableDao();
    }

    /**
     * 单例
     * */
    private static GreenDaoManager INSTANCE;

    public static GreenDaoManager getInstance(Context context){
        if (INSTANCE == null){
            INSTANCE = new GreenDaoManager(context);
        }
        return INSTANCE;
    }


    //添加一条数据到数据库
    public long insertPatrolTable (PatrolTable patrolTable) {

        long flag = mPatrolTableDao.insertOrReplace(patrolTable);

       return flag;
    }

    // 批量插入数据
    public void insertPatrolTables(List<PatrolTable> patrolTableList){
        mPatrolTableDao.insertInTx(patrolTableList);
    }

    //查询所有
    public List<PatrolTable> queryPatrolTable(){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder()
                .orderAsc(PatrolTableDao.Properties.Id);
        return query.list();
    }

    //查询地块名称
    public List<PatrolTable> queryMassif(String massifName){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder();
        query = query.where(PatrolTableDao.Properties.PatrolerMassif.eq(massifName))
                .orderAsc(PatrolTableDao.Properties.Id);;
        return query.list();


    }

    //查询巡查人员
    public List<PatrolTable> queryPerson(String personName){
        QueryBuilder<PatrolTable> query = mPatrolTableDao.queryBuilder();
        query = query.where(PatrolTableDao.Properties.PatrolerPerson.eq(personName))
                .orderAsc(PatrolTableDao.Properties.Id);
        return query.list();
    }


    //删除指定数据
    public void deletePatrolTable(PatrolTable patrolTable){
        mPatrolTableDao.delete(patrolTable);
    }

    //更新数据
    public void updatePatrolTable(PatrolTable patrolTable){
        mPatrolTableDao.update(patrolTable);
    }


}

使用:文章来源地址https://www.toymoban.com/news/detail-645096.html


    private void initDB(){
        GreenDaoManager instance = GreenDaoManager.getInstance(this);
        //创建数据
        PatrolTable patrolTable = new PatrolTable();
        patrolTable.setPatrolerPerson("张三");
        patrolTable.setPatrolerMassif("南湖公园");
        patrolTable.setPatrolerTime("2023-8-8 11:21");

        /** 添加数据 **/
        long flag = instance.insertPatrolTable(patrolTable);
        System.out.println(flag);


        /** 获取数据 **/
        List<PatrolTable> patrolTables = instance.queryMassif(patrolTable.getPatrolerMassif());
        Gson gson = new Gson();
        String json = gson.toJson(patrolTables);
        System.out.println("JSON"+json);

        /** 修改数据 **/
        PatrolTable updatePatrolTable = new PatrolTable();
        updatePatrolTable.setId(1l);
        updatePatrolTable.setPatrolerPerson("李四");
        updatePatrolTable.setPatrolerMassif("西湖公园");
        updatePatrolTable.setPatrolerTime("2023-8-10 11:21");
        instance.updatePatrolTable(updatePatrolTable);

        /**
         * 获取所有数据
         * */
        List<PatrolTable> allPatrolTables = instance.queryPatrolTable();
        Gson gson2 = new Gson();
        String json2 = gson2.toJson(allPatrolTables);
        System.out.println("JSON2"+json2);

    }

到了这里,关于Android 数据库之GreenDAO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android数据库查询

    1.查询图片 2.查询视频 3.查询音频 4.根据文件路径返回Uri (1) (2)备注代码里返回的视频的Uri,要返回音频或者图片的Uri要在查询和获取Uri里改为相应的URI查询。 5.查询特定后缀名的文件(\\\"pdf\\\", \\\"txt\\\", \\\"doc\\\", \\\"docx\\\", \\\"xlsx\\\", \\\"xls\\\", \\\"ppt\\\", \\\"pptx\\\", \\\"epub\\\") (1)根据后缀名来查询(存在的

    2024年02月16日
    浏览(34)
  • Android studio 连接SQLite数据库 +创建数据库+创建数据库表

    Android studio 之数据库的使用 连接创建SQLite 大家好,欢迎来到寒依。 相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻” 我

    2024年02月02日
    浏览(52)
  • Android studio引入外部SQLite数据库,获取数据库列表数据

    准备好Android studio和一个创建管理数据库的软件,推荐SQLite Expert Professional或者Navicat Premium。这里以SQLite Expert Professional为例。 1.穿件sqlite数据库,按照自己的项目要求定义数据库和相应的数据表 1.在main目录下创建assets文件,将准备好的sqlite数据库文件放入这个目录下 解释:

    2024年02月08日
    浏览(54)
  • Android 数据库增删改查

    1、activity_main.xml 页面布局 代码 2、MainActivity.java 通过点击不同的按钮,进行不同的增删改查操作 3、UserDao.java 包含对数据库的增删改查方法 4、User.java 实体类对应着user表中的字段 5、SQLiteOpenHelper.java 创建表,更新表方法

    2023年04月08日
    浏览(31)
  • 【Android】Room数据库的使用

    Room 是在 SQLite 的基础上推出的 Android 库,它是 Google 官方对数据库操作的推荐方式。使用 Room 可以更方便、高效地操作 SQLite 数据库。 添加依赖 在使用 Room 之前,需要在项目中添加 Room 相关的依赖。在 build.gradle 文件中添加以下依赖: 在上面的依赖中,我们添加了 room-runti

    2024年02月09日
    浏览(48)
  • Android Studio 学习记录-数据库

    目录 SQL的基本语法 1.数据定义语言 2.数据操纵语言 数据库管理器 SQLiteDatabase 数据库帮助器 SQLiteOpenHelper 优化记住密码功能         本文介绍Android的数据库存储方式-SQLite的使用方法,包括:SQLite用到了哪些SQL语法,如何使用数据库管理器操纵SQLite,如何使用数据库帮助器

    2024年02月07日
    浏览(51)
  • Android之 常用数据库框架整理

    一 简介 1.1 上节说了关系型数据库有以下几种: Oracle、Microsoft SQL Server、Microsoft Access、MySQL、SQLite 1.2 各自的领域也不一样 java,C#,php等用Oracle,Microsoft SQL Server,MySQL比较多。 移动端Android,IOS等用SQLite比较多 1.3 SQLite是一种轻量型数据库,有以下优点: 不需要一个单独的服

    2024年02月14日
    浏览(37)
  • Android 连接MySql数据库步骤

    1.首先我们需要导入mysql驱动jar包下载地址:   在android studio的build.gradle中插入 } 2、建立JDBCutils类    分析:jdbc:mysql://192.168.43.215:3306/user\\\",\\\"root\\\",\\\"1234\\\"语句    1、jdbc:mysql://基本格式    2、192.168.43.215你当前连的网的Ipv4地址(可以在cmd命令窗口输入ipconfig命令,找到你连的网(

    2024年02月05日
    浏览(43)
  • Android 进阶 1、sqlite数据库

    在我们学会了Android的基本使用之后就需要往高处发展了,毕竟水往高处流,很多时候我们学习一门技术感觉没有收获都是因为还没到那个层次,当你一步步往上走的时候就会渐渐发现自己收获的越来越多,进步也就会越来越快了,废话不多说,回到正题; 1、认识数据库 安卓

    2024年02月10日
    浏览(44)
  • Android之SQLite数据库使用

    SQLite是Android系统集成的一个轻量级的数据库。 Android提供了 SQLiteDatabase代表一个数据库 (底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。 Android为了让我们能够更加方便地管理数据库,

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包