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.) 。

一、配置方法
1.直接开始配置,首先找到这个Library,如下图:
2. 找到相应Module的build.gradle文件,添加的下面的内容:
说明:第三步配置的是生成的数据库操作模板代码的路径。
3.找到Project的build.gradle文件,添加下面的内容:
至此 配置就完成了,下来就开始生成数据库并使用。
二、生成数据库操作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; @Override
protected 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(), 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();
} @Override
public 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 精确查询 名字等于jackie
public void queryEq() {
Person person = mPersonDao.queryBuilder().where(PersonDao.Properties.Name.eq("jackie")).unique();
} //notEq: not equal 精确查询 名字不等于jackie
public 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(, )).list();
} //gt: greater than 半开区间查询,年龄大于18
public void queryGt() {
List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.gt()).list();
} //ge: greater equal 半封闭区间查询,年龄大于或者等于18
public void queryGe() {
List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.ge()).list();
} //lt: less than 半开区间查询,年龄小于18
public void queryLt() {
List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.lt()).list();
} //le: less equal 半封闭区间查询,年龄小于或者等于18
public void queryLe() {
List<Person> persons = mPersonDao.queryBuilder().where(PersonDao.Properties.Age.le()).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查询
Android Studio配置GreenDAO 3.2.0和使用方法的更多相关文章
- Android Studio配置Git及Git文件状态说明
Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...
- Android studio 配置JNI环境
Android studio配置jni开发环境,主要配置是两个build文件,以及新建一个jni文件,放c代码. 代码如下1: apply plugin: 'com.android.model.app ...
- 【Flutter 1-2】在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境
在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境 文章首发地址 配置环境变量 由于部分网站被墙的原因,我们需要先配置Flutter国内镜 ...
- Win10下Android studio配置
Win10下Android studio配置 一.安装Android Studio的准备工作 1.下载好JDK,去官网上找一个下载下来 2.安装JDK.并配置环境变量.安装过程:本人将使用的是jdk- ...
- Android studio配置Git
Android studio配置Git 1.下载window 版git并安装:下载地址 2.Android Studio设置git插件:File->Setting->Version Con ...
- Android Studio 配置SVN实现代码管理
Refference From:http://iaiai.iteye.com/blog/2267346 一.Android Studio配置SVN Android Studio关联配置SVN很简单,在 ...
- Android studio 配置file encoding 无效,中文乱码解决办法
通过配置Android studio 配置file encoding 无效,中文乱码,问题出现在java编译的时候jack采用了默认编码(中文windows默认的GBK编码)而乱码,所以不管更改bui ...
- Android Studio配置使用git
一.准备 如果没有安装git,那么先要到到Git官网下载git,然后按照提示一步一步安装即可,这个没有什么难度,不过要记得安装的目录. 二.Android Studio配置git File->S ...
- android studio配置android开发环境
1.下载安装android-studio-bundle 地址:https://developer.android.com/sdk/index.html 注意:指定android sdk和android ...
随机推荐
- spring boot的项目结构问题
问题:spring boot项目能够正常启动,但是在浏览器访问的时候会遇到404的错误,Whitelable Error Page 404 分析及解决方案:首先Application文件要放在项目的外 ...
- 洛谷P1563 玩具谜题 简单模拟
没意义,注意方向别判错. Code: #include<cstdio> #include<cstring> using namespace std; const int max ...
- 路飞学城Python-Day151
sprapy框架能够在pycharm中调试的方式 需要在配置文件中加上一个文件,文件的内容为 start.py #!/usr/bin/env python # -*- coding:utf-8 -*- ...
- linux系统时间与网络时间不同步
在解决问题之前,我们首先来了解下面几个知识点: 1. date命令: #date 显示系统时间 2.hwclock命令 (即hardwareclock系统硬件时间) #hwclock 显示硬件时间 ...
- HDU 5322 Hope (分治NTT优化DP)
题面传送门 题目大意: 假设现在有一个排列,每个数和在它右面第一个比它大的数连一条无向边,会形成很多联通块. 定义一个联通块的权值为:联通块内元素数量的平方. 定义一个排列的权值为:每个联通块的权值之 ...
- P1546 最短网络 Agri-Net (kruskal)
题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...
- windows远程桌面无法复制粘贴的解决方案
方法一:在网上最常见的方法,就是杀掉 rdpclip.exe进程后重启. 在远程桌面的任务栏,右键启动任务管理器 这时候进程列表中已经没有看到rdpclip.exe了,桌面左下方点击[开始]--> ...
- 01.Python基础-4.字符串
1 字符串初识 字符串编码 字符串定义:多个字符(双引号或单引号中的数据)组成 字符串下标 类似列表list 格式化 就是占位符 最常用%s %d %f等等 转义字符 转义字符 描述 \ (在行尾时) ...
- 在 CentOS7 上配置 nginx 虚拟主机
创建配置文件保存目录,其中 sites-available 用来实际保存配置文件,sites-enabled 用来保存符号链接 : mkdir /etc/nginx/sites-available m ...
- Civil3D二次开发常见问题总结
Civil3D二次开发常见问题总结 AutoCAD命令提示"未知命令**--"的原因:在Initialize方法内报出异常就会导致这种情况.O__O"-(或是少加了dll ...