zoukankan      html  css  js  c++  java
  • [Android] Android 使用 Greendao 操作 db sqlite

    Android 使用 Greendao 操作 db sqlite

    GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣。它减轻开发人员处理低级数据库需求,同时节省开发时间。 SQLite是一个令人敬畏的内嵌的关系数据库,编写SQL和解析查询结果是相当乏味和耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),GreenDAO可以将它们从这些映射中释放出来,这样,您可以使用简单的面向对象的API来存储,更新,删除和查询数据库。

    如何使用:

    一、添加依赖

    项目 build.gradle

    buildscript {
    
        dependencies {
            **
            classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
        }
    }

    appuild.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'org.greenrobot.greendao'
    
    android {
        ***
    }
    
    greendao {
        schemaVersion 1
        targetGenDir 'src/main/java'
        daoPackage "${android.defaultConfig.applicationId}.greendao"
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.4.0'
    
        ***
    
        compile 'org.greenrobot:greendao:3.0.1'
    }

    二、编写Bean实体

    UserInfo.java

    @Entity
    public class UserInfo {
        @Id(autoincrement = true)
        private long id;
        private String userName;
        private int age;
    }

    然后点击Build -> make project  (或Ctrl + F9)

    生成对应的Dao文件

    三、编写DBManager

    DBManager.java

    package com.jack.testmd.greendao;
    
    import android.content.Context;
    
    public class DBManager {
        private static final String DB_NAME = "sport-db";
        private UserInfoDao userInfoDao;
    
        private static DaoMaster.DevOpenHelper sHelper;
        private static DaoSession sDaoSession;
    
        public static DBManager get() {
            return SingletonHolder.instance;
        }
    
        private static class SingletonHolder {
            private static DBManager instance = new DBManager();
        }
    
        public void init(Context context) {
            if (sDaoSession == null) {
                DaoMaster.DevOpenHelper sHelper = new DaoMaster.DevOpenHelper(context, DB_NAME);
                DaoMaster sDaoMaster = new DaoMaster(sHelper.getWritableDatabase());
    
                sDaoSession = sDaoMaster.newSession();
            }
            userInfoDao = sDaoSession.getUserInfoDao();
        }
    
        private DBManager() {
        }
    
        public DaoSession getDaoSession(){
            return sDaoSession;
        }
        public UserInfoDao getUserInfoDao() {
            return userInfoDao;
        }
    
        public void closeConnection() {
            closeHelper();
            closeDaoSession();
        }
    
        public void closeHelper() {
            if (sHelper != null) {
                sHelper.close();
                sHelper = null;
            }
        }
    
        public void closeDaoSession() {
            if (sDaoSession != null) {
                sDaoSession.clear();
                sDaoSession = null;
            }
        }
    
    
    }

    四、业务逻辑中调用

    个人写了两种调用方法:

    方法一:直接在MainActivity中调用

    Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用

    方法二:封装DaoUtils类,然后在MainActivity中调用DaoUtils

    Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10705622.html

    转载请著名出处!谢谢~~

  • 相关阅读:
    POJ 1018 Communication System
    POJ 1017 Packets
    Codeforces 725B Food on the Plane
    Lessons learned from manually classifying CIFAR-10
    CCF推荐国际学术期刊
    局部数组过大导致编译栈区溢出问题
    自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
    C++学习笔记29,引用变量(1)
    Android视频应用去广告学习实践
    sublime编辑器怎样高速输入PHP头部版本号声明
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10705622.html
Copyright © 2011-2022 走看看