您的位置:首页 > 移动开发 > Android开发

Android GreenDao的配置和使用

2017-06-03 14:15 253 查看

前言:

本文讲述在Eclipse开发Android项目集成GreenDao ORM的教程和代码示例,讲述GreenDao在项目中的部署以及使用GreenDao生成Dao类的示例,最后讲解GreenDao的增删改查的使用,本文讲述的完整项目源码,将在文章末尾提供下载参考。

一. 简介:

1.GreenDao官网:点击进入

2.GreenDao是目前速度最快的Android ORM似乎没有之一,而且具备了像Hibernate逆向工程一样,可自动生成实体类和DAO类,节省时间解放双手,选择它作为Android项目的ORM是毋庸置疑的。

3.本文讲解GreenDao3.2.2最常用的配置和“增删改查”的使用,了解了这些,再到官网上参考说明文档也就轻松了许多。

二. 下载

1.所有依赖jar包下载地址:点击下载

2.也可以到Maven上自行搜索下载:点击跳转到maven

3.所需要的jar包清单:

greendao-3.2.2.jar

greendao-generator-3.2.2.jar

greendao-api-3.2.2.jar

freemarker-2.3.26-incubating.jar

三. 配置

1.部署jar包:新建Android项目(或用你的Android项目),将上面的4个Jar包拷贝到项目libs中,然后右键选中jar包,选择BuildPath,选择Add to Build Path。

2.创建GreenDao生成器:新建一个Java类,在Main方法中写下你项目的实体类的包名、类名、类属性和生成代码文件的保存路径,既可自动创建Bean和Dao类。

package com.greendao.main;

import java.io.IOException;

import org.greenrobot.greendao.generator.DaoGenerator;
import org.greenrobot.greendao.generator.Entity;
import org.greenrobot.greendao.generator.Schema;

public class GenerateGreenDao {
public static void main(String[] args) {
//第一个参数时int类型的version版本号, 第二个是String类型的 defaultJavaPackage完整包名)
Schema schema = new Schema(1, "com.greendao.dao");
//数据库表名,即JavaBean的名字,例:以User为例
Entity user= schema.addEntity("User");
//添加一个主键,自动添加一个id作为主键,不能自定义
user.addIdProperty();
//添加两个字段,即JavaBean的属性:userName和UserPwd
user.addStringProperty("userName").notNull();
user.addStringProperty("UserPwd");
try {
//该路径必须要存在。最后代码生成路径为../GreenDaoDemo/src再加上Schema中的包名"com.greendao.bean"
new DaoGenerator().generateAll(schema, "../GreenDaoDemo/src");
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

}


3.运行这个main方法类,成功运行完后,右键Refresh项目。即可看到自动生成DAO类和JavaBean类和Session类和DaoMaster类,一个表生成共四个类。

4.如果在Android项目中运行main方法报错:Invalid layout of java.lang.String at value。

解决方法:

- 右键单击这个类,选择run as –>run configuration

- 选择class path,将Bootstrap Entires程序引导下的Android4.4.2(你的SDK版本)Remove去掉即可。

四. 使用

1.如何在程序中开启一个数据库连接?

private DevOpenHelper helper;
private DaoMaster master;
private DaoSession session;
private UserDao userdao;

/**
* 开启一个数据库连接
*/
private void openDb() {
helper = new DaoMaster.DevOpenHelper(MainActivity.this, "user");
master = new DaoMaster(helper.getWritableDatabase());
session = master.newSession();
userdao = session.getUserDao();

}


2.插入一条数据:

private void save() {
// 打开数据库
openDb();
// 通过时间戳生成一个唯一主键,保证主键不重复,否则会主键冲突,插入数据报错
Long id = System.currentTimeMillis();
// 创建一个对象,传入相应的值
User user = new User(id, name.getText().toString(), pwd.getText().toString());
// 返回值为该表的主键ID
Long rowId = userdao.insert(user);
// 成功返回该条数据的id,表示数据插入成功。
Toast.makeText(MainActivity.this, (id.equals(rowId)) ? "保存成功" : "保存失败", Toast.LENGTH_SHORT).show();
}


3.删除一条数据:

private void delete(){
openDb();
//删除Id为2的用户
userdao.delete(new User(Long.valueOf(2)));
}


4.修改一条数据:

private void update() {
openDb();
userdao.insertOrReplace(new User(Long.valueOf(1),"葫芦娃","12345678"));
}


5.查询数据:

private List<User> Query() {
openDb();
List<User> list= userdao.queryBuilder().list();
Log.i("greendao", list.toString());
return list;
}


6.条件查询:

//查询用户名为“葫芦娃”的用户信息
private User queryByconditionEq(){
User user = userdao.queryBuilder().where(UserDao.Properties.UserName.eq("葫芦娃")).unique();
return user;
}


7.惰性查询:

/**
* 惰性加载(只加载对象和对象的属性游标,而当调用对象的属性时候,才通过游标加载其中的属性)
* 注意:使用结束,要关闭游标。
* @return LazyList
*/
private LazyList<User> queryLazy(){
openDb();
LazyList<User> list  = userdao.queryBuilder().listLazy();
list.close();//关闭游标
return list;
}


关于其他的方法就不在此一一展开演示了,学会了这些基础的使用,再看一下文档里的说明,也就都会使用啦。

本教程所使用的项目的演示代码下载:点击下载

彩蛋:推荐一下查看安卓数据库文件的软件,解压即可使用,通过FileExplorer将data/data/项目文件夹/database中的文件拷贝到Windows中,拖到软件图标上就可以查看数据表了,下载地址:点击下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: