GreenDao3.0学习(一)

GreenDao 3.3.0 基本使用与入门 (一) GreenDao 引入 GreenDao官网 GreenDaoAPI地址 Porject 目录下 build.gradle 下添加配置 dependencies { classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.neenbedan 阅读详情

本文主要是greendao3.0的快速配置

一.什么是greendao

GreenDao是一个用于Android开发的对象/关系映射(ORM)工具。它向SQLite数据库提供了一个对象导向的接口。主要是将对象映射到SQLite数据库中,GreenDao3.0是greendao的一个新的版本,相对于greendao2.x有更加快捷的配置方式,

二.greendao的特点:

  1. 性能最大化(对于Android来说,可能是最快的ORM)
  2. 简单易用API
  3. 对Android高度优化
  4. 最小的内存开销
  5. 较小的文件体积
  6. 等等

三.greendao的优点与缺点

优点:性能最大化、内存开销最小化、对Android高度优化、操作方便、文件体积比较小
缺点:学习成本大、需要遵循一些规则

greendao官网:
http://greenrobot.org/greendao/
github上的greendao:
https://github.com/greenrobot/greenDAO

greenDAO结构图

greendao3.0配置

前面介绍了这么多,但是好像和本文没有太大的关系,好了,现在我们就开始一步一步的进行greendao3.0的配置。
由于我是使用的android studio开发,所以主要也是按照在android studio中进行配置,

第一步:

在build.gradle中加入apply plugin: 'org.greenrobot.greendao'
如下图

第二步:

在build.gradle中加入

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

如下图:

第三步:

在build.gradle中加入

compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'

如下图:

第四步:

在build.gradle中加入

greendao {
    schemaVersion 1
    daoPackage 'baochen.greendao.dao.gen'
    targetGenDir 'src/main/java'
}

如下图:


这里需要做一下说明:
schemaVersion: 表示的数据库schema的版本号:在升级数据库或者数据迁移的时候需要改变这个值,只要每次都+1就行;
daoPackage: dao的包名,包名默认是entity所在的包;
targetGenDir : 自动生成的数据库文件的目录。

如果上面不指定目录的话,数据库文件就会生成到build/generated/source/greendao下面,还需要拷贝到自己的目录中,所以这里还是指定生成目录为好。

第五步:

在项目中新建一个实体类(如UserBean.java),并加入如下代码:

@Entity
public class UserBean {
    @Id
    private Long id;
    private String name;
}

第六步:

点击bulid下的make project


这时我们会看到UserBean 这个类中自动生成了许多东西,

@Entity
public class UserBean {
    @Id
    private Long id;
    private String name;
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @Generated(hash = 2024802960)
    public UserBean(Long id, String name) {
        this.id = id;
        this.name = name;
    }
    @Generated(hash = 1203313951)
    public UserBean() {
    }

}

同时:在我们刚刚配置的greendao自动生成dao的目录下,生成了如下三个文件:
DaoMaster.java/DaoSession.java/UserBeanDao.java


其中DaoMaster.java/DaoSession.java都是greendao生成的管理数据库的类。比如DaoMaster.java中就会生成数据库schema的版本号:(就是我们刚刚在build.gradle中设置的版本号:)

public static final int SCHEMA_VERSION = 1;


而自动生成的UserBeanDao.java就是更具我们设置的UserBean生成的,(为什么会生成这个类呢,在下一节中仔细说明)
在UserBeanDao.java这个类中,我们可以看到,生成了一张名为USER_BEAN的数据表,也是说,只要我们配置好greendao3.0的相关东西,我们不需自己去生写成数据表的sql语句,可以认为UserBeanDao.java就是一张数据表,UserBeanDao.java的代码如下:

/** 
 * DAO for table "USER_BEAN".
*/
public class UserBeanDao extends AbstractDao<UserBean, Long> {

    public static final String TABLENAME = "USER_BEAN";

    /**
     * Properties of entity UserBean.<br/>
     * Can be used for QueryBuilder and for referencing column names.
    */
    public static class Properties {
        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
        public final static Property Name = new Property(1, String.class, "name", false, "NAME");
    };


    public UserBeanDao(DaoConfig config) {
        super(config);
    }

    public UserBeanDao(DaoConfig config, DaoSession daoSession) {
        super(config, daoSession);
    }

    /** Creates the underlying database table. */
    public static void createTable(Database db, boolean ifNotExists) {
        String constraint = ifNotExists? "IF NOT EXISTS ": "";
        db.execSQL("CREATE TABLE " + constraint + "\"USER_BEAN\" (" + //
                "\"_id\" INTEGER PRIMARY KEY ," + // 0: id
                "\"NAME\" TEXT);"); // 1: name
    }

    /** Drops the underlying database table. */
    public static void dropTable(Database db, boolean ifExists) {
        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"USER_BEAN\"";
        db.execSQL(sql);
    }

    @Override
    protected final void bindValues(DatabaseStatement stmt, UserBean entity) {
        stmt.clearBindings();

        Long id = entity.getId();
        if (id != null) {
            stmt.bindLong(1, id);
        }

        String name = entity.getName();
        if (name != null) {
            stmt.bindString(2, name);
        }
    }

    @Override
    protected final void bindValues(SQLiteStatement stmt, UserBean entity) {
        stmt.clearBindings();

        Long id = entity.getId();
        if (id != null) {
            stmt.bindLong(1, id);
        }

        String name = entity.getName();
        if (name != null) {
            stmt.bindString(2, name);
        }
    }

    @Override
    public Long readKey(Cursor cursor, int offset) {
        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
    }    

    @Override
    public UserBean readEntity(Cursor cursor, int offset) {
        UserBean entity = new UserBean( //
            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
            cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1) // name
        );
        return entity;
    }

    @Override
    public void readEntity(Cursor cursor, UserBean entity, int offset) {
        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
        entity.setName(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
     }

    @Override
    protected final Long updateKeyAfterInsert(UserBean entity, long rowId) {
        entity.setId(rowId);
        return rowId;
    }

    @Override
    public Long getKey(UserBean entity) {
        if(entity != null) {
            return entity.getId();
        } else {
            return null;
        }
    }

    @Override
    protected final boolean isEntityUpdateable() {
        return true;
    }

}

到目前为止,我们对greendao3.0的配置基本上完成,虽然配置有点麻烦,但是对于我们后面使用greendao对数据库进行相关操作的时候,会发现很方便。
项目相关地址:https://github.com/mutounaodai/Greendao

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】 S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7) 阅读详情

相关推荐

openEuler 欧拉 安装Oracle19c数据库RPM包安装

欧拉系统安装部署oracle 19c rpm方式

陈苏漾的IT生涯 6894

Android GreenDAO 核心方法详解

摘要:GreenDAO 是一个高效的 Android ORM 框架,主要包含五大核心组件:Entity(实体类)、DaoMaster(数据库管理)、DaoSession(会话管理)、DAO(数据访问对象)和 QueryBuilder(查询构建)。实体类通过注解定义表结构,支持主键、索引、关联关系等特性。DaoMaster 负责数据库创建和版本升级,DaoSession 提供事务管理和 DAO 访问。DAO 组件实现完整的 CRUD 操作,而 QueryBuilder 支持条件查询、排序分页等高级功能。该框架

要乐观,要积极,多笑,多照镜子 961

【SWPUCTF 2021 新生赛】hardrce

对每个字符的ASCII值进行按位取反操作(这种要进行自增马进行绕过。

XiaoHei的博客 460

GreenDao 3.3.0 增删改查的使用(三)

GreenDao 3.3.0 多表关联使用(二) GreenDao 的数据操作处理是继承自AbstractDao这个抽象类 最基本的函数: insert(T) delete(T) update(T) save(T) insertOrReplace(T) loadAll() 其中 save(T) 和insertOrReplace(T) 方法比较特殊既能进行插入操作也能执行修改操作 insertInTx(T…) deleteInTx(T…) updateInTx(T…) saveInTx(T…)

Mr_kings的专栏 2162

基于Simulink的光伏电站AGC/AVC协调控制仿真

摘要:本文基于Simulink构建光伏电站AGC/AVC协调控制仿真模型,通过分层控制架构实现有功-无功解耦与储能协同。系统包含100kW光伏阵列、50kWh储能及逆变器组件,采用PID控制器实现AGC频率调节(±0.1Hz)和Q-V下垂控制实现AVC电压稳定(±2%)。仿真验证了三种工况下协调控制的有效性:正常调度时储能充电20kW;负荷突增时储能15kW放电维持频率;光照骤降时储能30kW放电并吸收2kVAR无功稳定电压。结果表明,该方案可使频率/电压偏差分别控制在0.1Hz和7.6V内,响应时间&lt

xiaoheshang_123的博客 235

Andorid开源框架greenDAO

数据库在安卓应用的简直就是家常便饭了,所以bihttps://github.com/greenrobot/greenDAO

Ataraxia的专栏 2624

构建OneService:打造高效、安全、灵活的企业级数据服务平台

数据服务(OneService)作为统一的数据服务出口,实现了数据的统一市场化管理,有效地降低数据开放门槛的同时,保障了数据开放的安全。

数据与算法架构提升之路专栏 2108

Android greenDAO数据库配置教程

一、环境配置1、在Android Studio中,在.src/mian目录下新建一个java-gen文件夹,和java文件夹同级。用于存放greenDAO生成的DaoMaster、DaoSession、Table、TableDao实体类。 2、配置项目的app.gradle文件,指定java-gen文件,引入greenDAO第三方jar包 sourceSets {

生活不只眼前的苟且,还有诗和远方的田野。 3444

在Windows10上安装WSL2

WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。

howard2005的专栏 5942

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

数据库GreenDao简介

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

qq_41821190的博客 2314

【Unity 反向运动学插件】Final IK 一套完整的IK解决方案

Final IK是Unity中一套完整的反向运动学解决方案,提供多种IK算法(CCD、FABRIK等)和功能模块,包括全身IK、VR驱动、武器瞄准、视线跟随等。其核心是通过数学方法计算关节旋转,使末端骨骼精确到达目标位置。系统支持多约束求解、旋转限制、动画烘焙及交互系统,采用模块化设计,兼顾性能与扩展性,适用于动作游戏、VR等需要高质量角色控制的场景,是Unity生态中最成熟的IK工具链之一。

2403_88403568的博客 1005

GreenDao 3.0 学习笔记(一)

一、ORM ORM了解一下~~~ 二、GreenDao 1. 官网地址http://greenrobot.org/greendao/ 2. greenDao是一种将java object 与SQLite Database关联起来的桥梁。 三、准备 1.gradle 配置 moudle层:apply plugin: 'org.greenrobot.greendao'/

Zhang_YingJie的博客 393

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

GreenDAO 3.0 初次使用

之前项目中用到了GreenDAO,使用的是2.X的版本,总结下来就是非常难用。2.X中是新建一个项目,然后再项目中配置各个实体的字段等相关属性,然后生成实体以及DAO操作相关的一些类。但是,当你修改了实体中的一些属性,并且这些属性又要在数据库中保存的时候,你会发现每次重新运行generator之前的改变都得重新再来一次。       GreenDAO中比较大的变化就是使用了注解和Gradle,而且

Hello MrLi 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android 简单使用 GreenDao3.0

GreenDao的使用 1、在project的build.grade文件中添加如下依赖 classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' 2、在app的build.grade文件中添加如下依赖 compile 'org.greenrobot:greendao:3.0.1' compile 'or...

qinxuexiang_blog的博客 4015

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

GreenDao3.0简单使用

greenDAO 优势 1、一个精简的库 2、性能最大化 3、内存开销最小化 4、易于使用的 APIs 5、对 Android 进行高度优化 Greendao3.0 最主要的三大改变: 换包名 实体注解 加密支持的优化 GreenDao 3.0使用: GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码。 GreenDao3

初来乍到 2061

GreenDao3.0的使用

前言之前用的还是GreenDao的2.x版本,总体感觉来时是比较难用的,而且唯一不能接受的是新建一个Java项目,然后再项目中配置各个实体的字段等相关属性,然后生成实体以及DAO操作相关的一些类。但是,当你修改了实体中的一些属性,并且这些属性又要在数据库中保存的时候,你会发现每次重新运行generator之前的改变都得重新再来一次。不过作者新发布的GreenDao3的话用了大量的注解,省去了新建项目

Chaosminds的博客 1064

greenDao3.0 的基本使用

greenDao3.0 的基本使用前言:greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。greenDao3.0 相对于2.0版本使用起来更简单易懂,大大降低学习成本。 如果要详细了解的小伙伴可以访问greenDao的官方地址:greenDao优势: 访问速度快. 易于使用的api. 内存消耗较少. 支持数据库加密. 库精简,从而避免65535的大小限制. 集成

u010041075的专栏 1735

GreenDao3.0的项目搭建及简单使用

GreenDao2.+时,使用GreendDao,需要另外创建一个Java项目,来生成DaoMaster,DaoSession,Dao,3.0之后依然可以另建项目来创建,不过,这些可以在一个Android项目之中完成了,而且3.0之后,采用注解来对实体进行定义,创建表,定义表的字段属性,加快创建表的速度。官方文档参考 具体实现:以下例子是在一个Android项目中创建表,并开发相关功能,不另外创

王公子 2698

Android Studio 简单使用 GreenDao3.0

Android Studio 简单使用 GreenDao3.0 据说现在很流行GreenDao框架,所以也抽空了解一下,可恨啊,刚看到的时候在百度上查询的就是GreenDao,然后很不幸的去走老版本的套路,麻麻烦烦的创建java工程,生成那四个文件,还为此查找了网上留存的不少的方法,今天的时候,再次搜索GreenDao的时候 ,发现有一个信息后面带了3.0这个版本号,查阅之后,只能暗自拍一拍大腿……

半把秋风的博客 7178

greendao3.0以上使用步骤(一):基础使用

本文介绍了greendao的基础入门使用:其中包括数据库的增删改查,基本使用功能,简单方便,易懂。 优势: 1:性能最大化 2:内存开销最小 3:API 简单好用 4:对Android 高度优化 5:2.2版本以上还支持加密数据库 6:支持protobuf协议存储(protobuf 比json更快,google的优秀产品,因此greendao能很好地与retrofit 2.0结合pr...

android开发笔记 2925

GreenDao 3

分享一份NDK基础开发资料分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!板技术停滞不前!**

2401_84123557的博客 1049

GreenDao3的初步使用

1.GreenDao简介。 现在程序中对于数据库的操作是必不可少的,而且占据整个程序的重要一个部分。而程序员掌握数据库的操作是很重要的一项技能,但是数据库的代码往往重复性很高,一遍遍的重复着相同的操作步骤并不是很明智的选择。这时候一个ORM框架就显得极为重要了,一个好的ORM框架可以为程序的开发节省大量的时间,并且好的框架还能够发挥出更大的性能和效率,所以如果并没有过硬的技术,去选择一个良好的O

繁城落叶 2669

Android ORM框架 GreenDao3.0的使用

前言之前用过许多的Orm框架,例如:ORMLite、greendao、ormndroid、androrm、ActiveAndroid,SugarORM等等,不过都没有一一研究,感觉GreenDao的文档和支持率比较高,所以就一直采用了GreenDao作为项目的Orm框架,关于这些框架的大致分析,可以看我Csdn的文章Android Orm框架分析 ,回到正题,我之前用的还是GreenDao的2.x版

戴定康的博客 1201

greenDAO 3.0 简介

greenDAO 是一个对象关系映射(ORM)的框架,能够提供一接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库是更简单、更方便。

陆羽_ 的简单生活 575
上一篇: android随机生成ip地址类型的字符串
下一篇: GreenDao3.0学习(二)
cbing111
博客等级 码龄12年 5粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值