Android Studio配置GreenDAO 3.2.0和使用方法

我相信,在平时的开发过程中,大家一定会或多或少地接触到SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写SQL语句与解析查询结果等。所以,适用于Android ORM框架也就孕育而生了,现在市面上主流的框架有OrmLite、SugarORM、Active Android、Realm与GreenDAO。今天主要来讲一下GreenDAO 3.0G后的版本是怎么在Android Studio上配置的。
简单的讲,GreenDAO是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。(greenDAO is a light & fast ORM solution that maps objects to SQLite databases.) 。

Android ORM 框架之 greenDAO 使用心得

一、配置方法

1.直接开始配置,首先找到这个Library,如下图:

2. 找到相应Module的build.gradle文件,添加的下面的内容:

说明:第三步配置的是生成的数据库操作模板代码的路径。

3.找到Project的build.gradle文件,添加下面的内容:

至此 配置就完成了,下来就开始生成数据库并使用。

GreenDAO 3.0之前的配置方式可以点这里查看。

二、生成数据库操作DAO代码

1.在项目中新建一个表字段的实体类,不需要自己写get和set方法,在生成表的时候会自动生成。不要忘了在类名上标记@Entity注解如图: 

2.选择build ——Make Project 一切顺利的话则会在包名下生成数据库的操作类,如下图:

三、使用方法

数据库的操作包括增删改改查,方法如下:

package com.jackie.greendao;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private EditText mName, mAge;private Button mAdd;private ListView mListView;private DaoMaster.DevOpenHelper mDevOpenHelper;private DaoMaster mDaoMaster;private DaoSession mDaoSession;private PersonDao mPersonDao;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initEvent();openDb();}private void initView() {mName = (EditText) findViewById(R.id.name);mAge = (EditText) findViewById(R.id.age);mAdd = (Button) findViewById(R.id.add);mListView = (ListView) findViewById(R.id.list_view);}private void initEvent() {mAdd.setOnClickListener(this);}private void openDb() {mDevOpenHelper = new DaoMaster.DevOpenHelper(this, "person.db", null);mDaoMaster = new DaoMaster(mDevOpenHelper.getWritableDb());mDaoSession = mDaoMaster.newSession();mPersonDao = mDaoSession.getPersonDao();}//插入public void insert() {Person person = new Person(Long.valueOf(1), mName.getText().toString(), Integer.parseInt(mAge.getText().toString()));mPersonDao.insert(person);mName.setText("");mAge.setText("");}public void delete(Person person) {mPersonDao.delete(person);}//更新public void update(Person person) {mPersonDao.insertOrReplace(person);}//查询public void query() {List<Person> persons = mPersonDao.queryBuilder().list();}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.add:insert();break;}}
}

四、查询功能

GreeDAO提供了各种各种的查询API,参见http://greenrobot.org/greendao/documentation/queries/

如果需要在控制台查看GreenDao是怎么拼装SQL语句的,在OnCreate()方法中打开下面的开关:

五、条件查询

    //查询所有数据public void queryAll() {List<Person> persons = mPersonDao.queryBuilder().list();}//eq: equal 精确查询  名字等于jackiepublic void queryEq() {Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.eq("jackie")).unique();}//notEq: not equal 精确查询  名字不等于jackiepublic void queryNotEq() {Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.notEq("jackie")).unique();}//like  模糊查询  名字以jackie开头public void queryLike() {Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie")).unique();//通配符List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).list();}//between 区间查询 年龄在20到30之间public void queryBetween() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.between(20, 30)).list();}//gt: greater than 半开区间查询,年龄大于18public void queryGt() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.gt(18)).list();}//ge: greater equal 半封闭区间查询,年龄大于或者等于18public void queryGe() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.ge(18)).list();}//lt: less than 半开区间查询,年龄小于18public void queryLt() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.lt(18)).list();}//le: less equal 半封闭区间查询,年龄小于或者等于18public void queryLe() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.le(18)).list();}//名字以jackie开头,年龄升序排序public void queryLikeAsc() {//通配符List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).orderAsc(PersonDao.Properties.Age).list();}//名字以jackie开头,年龄降序排序public void queryLikeDesc() {List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.like("jackie%")).orderDesc(PersonDao.Properties.Age).list();}

当上述查询满足不了业务逻辑时,可以自定义查询语句:

六、多线程查询

首先来看错误的方法:

错误截图:

从上面可以看出,只能在创建Query对象的线程中调用查询方法!

解决方法:

七、1对1查询


 

转载于:https://www.cnblogs.com/zhujiabin/p/7490040.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收件服务器主机名未响应,邮箱收件服务器主机名是什么

邮箱收件服务器主机名是什么 内容精选换一换FTP/SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库。当前仅支持Linux操作系统的FTP 服务器。连接FTP或SFTP服务器时&#xff0c;他们的连接参数相同&#xff0c;如表1所示。FTP/SFTP连接参数参数名说明取值样例…

数字孪生技术,让酷炫的智慧城市不再遥不可及

物联网智库 整理发布智慧城市对于不同的人&#xff0c;不同的角色所处不同立场都会有不同的定义。在普通人眼中“上班不拥堵&#xff0c;下班走近路”是智慧城市......在老年人眼中“独自在家遭遇危险&#xff0c;能有人及时提供帮助”是智慧城市......在消防员眼中“火情在苗头…

腾讯文档网页版登录提示服务器,腾讯文档官网地址,腾讯文档电脑版pc端登录入口...

腾讯文档是腾讯近期推出的一款多人协作在线文档产品&#xff0c;不但打通QQ、微信和PC等多个平台&#xff0c;哪么腾讯文档官网地址是什么&#xff1f;有没有电脑版&#xff0c;想在pc端编辑文档怎么办呢&#xff1f;腾讯文档没有电脑版软件&#xff0c;但腾讯文档网页版可以替…

向深度学习三剑客学习四种科研精神(上)

来源&#xff1a;陈德旺科学网博客深度学习&#xff0c;尤其是深度神经网络学习算法的兴起和大数据的加持&#xff0c;结合GPU的算力&#xff0c;如同 “三英战吕布”&#xff0c;终于搞定了人工智能这一反复无常的“吕布”&#xff0c; 使得人工智能得以第三次复兴。如今&…

val什么意思vb中的属性值_老司机带你探索Mysql中int(1)、int(10)、int(11)的区别是什么?...

在上一篇原创文章MySQL一个表的自增id用完了&#xff0c;背井大佬让我用这些姿势再往里插数据&#xff0c;最后留下了一个问题&#xff0c;大家知不知道int(1)和int(11)有什么区别&#xff0c;没有小伙伴互动回答&#xff0c;只有一位老哥让我说一下什么区别&#xff0c;我说上…

c#switch语句判断成绩_C#程序流程控制 知多少?

最近发现读书是个慢过程&#xff0c;很难一口吃个胖子&#xff0c;尤其读这种技术类的书&#xff0c;需要细嚼慢咽的精读&#xff0c;很耐心的读。迄今为止我一个像样的C#程序都没有做过&#xff0c;是小白中的小白&#xff0c;这倒不影响什么&#xff0c;毕竟在曾经学过C语言的…

无穷存在吗?

来源&#xff1a;数学职业家无穷大的存在问题是一个令人惊讶的古老问题。亚里士多德首先引入了一个明确的区分&#xff0c;以帮助理解它的意义。他区别两种不同的无穷大。其中之一&#xff0c;他称之为潜在无穷大&#xff1a;这种无限大刻画了无止境的宇宙或一个永无休止的名单…

机器学习虽好,也要看什么场合!

来源&#xff1a;AI科技评论编译 | 王念编辑 | 丛末身为AI时代的程序猿&#xff0c;我们天生就对数据集敏感。因此&#xff0c;当我们拿到一批真实数据时&#xff0c;激动之情肯定溢于言表&#xff01;举例来说&#xff0c;我们可能拿到了一组患者正确药量的数据集&#xff0c;…

CVTE前端笔试编程题

这些题目是做完笔试之后&#xff0c;在别的地方找到的&#xff0c;现在附上。 1.(1)这题考察的怎么把参数转换为数组&#xff0c;然后再截取你想要的位数。 function C(){var a_argsArray.prototype.slice.call(argumens,0,2);var b_argsArray.prototype.slice.call(arguments,…

springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo

最近自己写了一个SpringBootMybatis&#xff08;generator&#xff09;druid的demo1. mybatisgenerator逆向工程生成代码1. pom文件pom文件添加如下内容&#xff0c;引入generator插件<!-- mybatis代码生成插件 --><!--如果使用的mysql驱动是6.x的&#xff0c;那就无法…

盘点|世界流行的十大机械工程设计软件,你会用几种?

来源&#xff1a;自机械前线机械设计是机械生产的第一步&#xff0c;是决定机械性能的最主要的因素。为了满足机械产品性能的高要求&#xff0c;在机械设计中大量采用计算机技术进行辅助设计和系统分析&#xff0c;以下是目前世界上流行的十款式机械工程设计软件。1、Autodesk …

SpaceX再发射58颗星链卫星 总数达到538颗

来源&#xff1a;网易智能据外媒报道&#xff0c;在距离上次星链&#xff08;Starlink&#xff09;卫星发射仅仅10天后&#xff0c;美国太空探索技术公司SpaceX于当地时间周六再次发射了最新一批星链卫星。与以往每批发射60颗星链卫星不同的是&#xff0c;SpaceX此次只发射了58…

MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)(转)

阅读目录 一、MVC原理解析 1、MVC原理二、HttpHandler 1、HttpHandler、IHttpHandler、MvcHandler的说明2、IHttpHandler解析3、MvcHandler解析三、HttpModule 1、HttpModule能干什么2、HttpModule的使用3、HttpModule和HttpHandler如何区分4、UrlRoutingModule解析 四、总结正…

python中的画布背景设置_教你用python画图—Turtle详细教程

Turtle模块绝对是吸引非专业代码开发者人员学习python入门的好工具通过turtle几行代码的执行软件就会画出漂亮的图形&#xff0c;美观而且有成就感&#xff0c;这样一下子对python编程就产生了兴趣。这些漂亮的图形如三角形、五角星、机器猫等。在写代码的时候改变几个参数&…

城市大脑,是工程问题,但首先是基础科学问题

2020年&#xff0c;在5G&#xff0c;大数据&#xff0c;人工智能、区块链、新基建等一轮轮科技浪潮下&#xff0c;城市大脑开始逐步成为新的城市建设和前沿科技热点。到2020年6月已经有近500多个城市宣布建设“城市大脑”&#xff0c;包括阿里&#xff0c;华为&#xff0c;百度…

JOptionPane弹框常用实例

最近在做swing程序中遇到使用消息提示框的&#xff0c;JOptionPane类其中封装了很多的方法。 很方便的&#xff0c;于是就简单的整理了一下。 1.1 showMessageDialog 显示一个带有OK 按钮的模态对话框。 下面是几个使用showMessageDialog 的例子&#xff1a; Java代码 JOption…

从5G到6G的思考:需求、挑战、技术趋势

来源&#xff1a;5G作者&#xff1a;易芝玲&#xff1a;中国移动首席科学家。王森&#xff0c;韩双锋&#xff0c;崔春风&#xff1a;中国移动通信研究院。王亚峰&#xff1a;北京邮电大学信息与通信工程学院。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测…

VS2017C++单元测试

0、欢迎食用 希望对点进来的你有所帮助。全文记流水账&#xff0c;内心想法如示例项目名称。1、建立需测试的项目 新建项目正常书写.h 和.cpp文件2、新建单元测试 右击解决方案 -> 添加 -> 新建项目 Visual C -> 测试 -> 本机单元测试项目点击确定出现3、添加被测项…

ncf 推荐系统_浅析神经协同过滤NCF在推荐系统的应用

NCF在推荐领域应用背景CF&#xff0c;也就是协同过滤&#xff0c;在推荐领域有极其广泛的应用&#xff0c;应该没有谁的智能推荐系统是没用到过CF的。CF其实就是挖掘user和item的交互关系&#xff0c;然后生成I2I或者U2I表示向量。传统的CF从数学角度上还是偏行为统计计算的&am…

2020身高体重标准表儿童_2020年儿童标准体重表出炉!过胖影响发育!(附身高体重标准表)...

近年来&#xff0c;孩子们长胖的趋势越来越明显&#xff0c;一些疾病也有年轻化的趋势。很多家长们平时也很注意饮食搭配和运动&#xff0c;但孩子还是一不小心就“超重”了&#xff0c;真的防不胜防。相信和我一样担忧孩子家长肯定不少。今天就来和大家讲讲&#xff0c;关于孩…