设为首页 加入收藏

TOP

GreenDao的初次使用--号称Android最快的关系型数据库(一)
2019-09-01 23:12:53 】 浏览:45
Tags:GreenDao 初次 使用 号称 Android 最快 关系型 数据库

一、准备工作

1、项目build.gradle文件下的dependencies中引入插件:

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

2、在module的build.gradle文件下顶部依赖插件:

apply plugin: 'org.greenrobot.greendao'

3、在module的build.gradle文件下的dependencies中引入依赖:

compile 'org.greenrobot:greendao:3.2.0'

二、GreenDao的注解

1、实体@Entity注解:

  schema:告知GreenDao当前实体属于哪个schema

  active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

  nameInDb:在数据中使用的别名,默认使用的是实体的类名

  indexes:定义索引,可以跨越多个列

  createInDb:标记创建数据库表

2、基础属性注解

  @Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

  @Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")

  @NotNul:设置数据库表当前列不能为空

  @Transient :添加次标记之后不会生成数据库表的列

3、索引注解

  @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

  @Unique:向数据库列添加了一个唯一的约束

4、关系注解

  @ToOne:定义与另一个实体(一个实体对象)的关系

  @ToMany:定义与多个实体对象的关系

三、简单使用----使用管理类DBManager,操作名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操作

1、创建实体用户类User,使用GreenDao进行注解,ReBuild项目。

/**
 * <p>Description:
 */
@Entity
public class User {

    @Id(autoincrement = true)
    private Long id ;
    private String name ;
    private int age ;

    public User(String name,int age){
        this.name = name ;
        this.age = age ;
    }


    @Generated(hash = 1309193360)
    public User(Long id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    @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;
    }
    public int getAge() {
        return this.age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
View Code

2、创建管理类DBManager,完成对User的增删改查方法

public class DBManager {

    private static DBManager instance ;
    private final static String dbName = "test_db";

    private Context mContext ;

    private DBManager(Context context){
        this.mContext = context ;
        openHelper = new DaoMaster.DevOpenHelper(context,dbName);
    }


    private DaoMaster.DevOpenHelper openHelper = null ;

    public static DBManager getInstance(Context context){
        if(instance == null){
            synchronized (DBManager.class){
                if(instance == null){
                    instance = new DBManager(context);
                }
            }
        }
        return instance ;
    }

    private SQLiteDatabase getWriteableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getWritableDatabase();
    }
    private SQLiteDatabase getRedadableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getReadableDatabase() ;
    }


    public void saveUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        //存入user对象
        userDao.save(user);

    }

    public void saveUsers(List<User> users){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.saveInTx(users);
    }

    public void delteUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableD
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇dagger2的初次使用 下一篇安卓开发笔记(十一):SharedPre..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目