Android GreenDao的配置和使用

来源:互联网 发布:java 参数不能传null 编辑:程序博客网 时间:2024/06/05 18:49

前言:

本文讲述在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中,拖到软件图标上就可以查看数据表了,下载地址:点击下载

原创粉丝点击