GreenDAO的简单使用

来源:互联网 发布:淘宝左轮手抢制作零件 编辑:程序博客网 时间:2024/05/16 15:18

[url]https://github.com/greenrobot/greenDAO

加入依赖

apply plugin: 'com.android.application'compile 'org.greenrobot:greendao:3.2.0'

gradle根文件加入以下代码(注意,在项目的build.gradle中的根目录)

buildscript {    repositories {        jcenter()        mavenCentral() //主要是加这个仓库    }    dependencies {        classpath 'com.android.tools.build:gradle:2.3.0'        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' //主要加入的这行代码    }}

使用用法

在application中初始化

GreenDaoManager.getmInstance(this);

创建GreenDAOManager

public class GreenDaoManager {    private static GreenDaoManager mInstance;    private static DaoSession daoSession;    private static DaoMaster daoMaster;    private GreenDaoManager(Context context) {        //通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper        //注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(context, "contacts-db",null);        //注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。        SQLiteDatabase sqLiteDatabase = devOpenHelper.getWritableDatabase();        daoMaster = new DaoMaster(sqLiteDatabase);        daoSession = daoMaster.newSession();    }    public static GreenDaoManager getmInstance(Context context){        if (mInstance == null){            synchronized (GreenDaoManager.class){                if (mInstance == null){                    mInstance = new GreenDaoManager(context);                }            }        }        return mInstance;    }    public DaoSession getDaoSession(){        return  daoSession;    }    public DaoMaster getDaoMaster(){        return daoMaster;    }}

编写实体bean类

@Entitypublic class User {    @Id    private Long id;    private String name;    @Transient    private int tempData;}

编写好后点击as中build中的make project,会帮助我们生成如下代码

@Entitypublic class User {    @Id    private Long id;    private String name;    @Transient    private int tempData;    @Generated(hash = 873297011)    public User(Long id, String name) {        this.id = id;        this.name = name;    }    @Generated(hash = 586692638)    public User() {    }    public Long getId() {        return this.id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return this.name;    }    public void setName(String name) {        this.name = name;    }}

_注解的意思:
@Entity 定义实体
@nameInDb 在数据库中的名字,如不写则为实体中类名
@indexes 索引
@createInDb 是否创建表,默认为true,false时不创建
@schema 指定架构名称为实体
@active 无论是更新生成都刷新
(二) @Id
(三) @NotNull 不为null
(四) @Unique 唯一约束
(五) @ToMany 一对多
(六) @OrderBy 排序
(七) @ToOne 一对一
(八) @Transient 不存储在数据库中
(九) @generated 由greendao产生的构造函数或方法_

greendao的增删改查

**获取dao对象
UserDao userDao = GreenDaoManager.getmInstance(this).getDaoSession().getUserDao();**

    //创建一个新的用户实体对象    User user = new User(id, name);    //插入操作    userDao.insert(user);

    //根据传入的name先做查找,如果查到的用户不为空则调用删除方法    User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq(name)).build().unique();        if (findUser != null) {            //根据实体用户的id删除对应的条目            userDao.deleteByKey(findUser.getId());        }

    //将旧名字改为新名字    private void updataUser(String oldName, String newName) {        //获取dao对象        UserDao userDao = GreenDaoManager.getmInstance(this).getDaoSession().getUserDao();        //去数据库中查找对应的数据        User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq(oldName)).build().unique();        if (findUser != null) {            //查找的数据返回不为空.设置新名字            findUser.setName(newName);            //更新数据库            GreenDaoManager.getmInstance(this).getDaoSession().getUserDao().update(findUser);            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();        } else {            Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();        }        //刷新列表        myAdapter.notifyDataSetChanged();    }

//调用返回一个集合userList = GreenDaoManager.getmInstance(this).getDaoSession().getUserDao().queryBuilder().build().list();
0 0
原创粉丝点击