GreenDao3.2入门学习


Gradle配置

//在Project的build.gradle添加依赖
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        //GreenDao3.2依赖
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
    }
}

//在Module的build.gradle添加依赖
apply plugin: 'org.greenrobot.greendao'
greendao {
          //版本号、升级时可配置
          schemaVersion 1       
          //设置DaoMaster、DaoSession、Dao包名      
          daoPackage 'com.yi.greendao'
          //设置DaoMaster、DaoSession、Dao目录
          targetGenDir 'src/main/java'
}

常用注解说明

@Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
@Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增
@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “name”)
@NotNull:设置当前列不能为空
@Transient:使用该注释的属性不会被存入数据库的字段中
@Unique:该属性值必须是唯一值
@Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改

创建实体类

@Entity
public class User{

    @Id(autoincrement = true)
    private Long id;
    @Unique
    private String phone;
    @Property(nameInDb = "dbname")
    private String name;
    private int age;

}

创建完成后,点击Build- ->Make Project,自动生成代码:
1、Bean实体的构造方法和get、set方法。
2、DaoMaster、DaoSession、Dao三个类。

数据库初始化

public class GreenDaoHelper {

    private static DaoMaster.DevOpenHelper devOpenHelper;
    private static SQLiteDatabase database;
    private static DaoMaster daoMaster;
    private static DaoSession daoSession;
    //单例模式
    private static GreenDaoHelper mInstance;

    private GreenDaoHelper() {
        //初始化建议放在Application中进行
        if (mInstance == null) {
            //创建数据库"info.db"
            devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(), "info.db", null);
            //获取可写数据库
            database = devOpenHelper.getWritableDatabase();
            //获取数据库对象
            daoMaster = new DaoMaster(database);
            //获取Dao对象管理者
            daoSession = daoMaster.newSession();
        }
    }

    public static GreenDaoHelper getInstance() {
        if (mInstance == null) {
            //保证异步处理安全操作
            synchronized (GreenDaoHelper.class) {
                if (mInstance == null) {
                    mInstance = new GreenDaoHelper();
                }
            }
        }
        return mInstance;
    }

    public DaoMaster getDaoMaster() {
        return daoMaster;
    }

    public DaoSession getDaoSession() {
        return daoSession;
    }

}

说明:
1、DevOpenHelper:创建SQLite数据库的SQLiteOpenHelper的具体实现。
2、DaoMaster:GreenDao的顶级对象,作为数据库对象、用于创建表和删除表。
3、DaoSession:管理所有的Dao对象,Dao对象中存在着增删改查等API。

数据库的增删改查


public class MyUserDao {

    /**
     * 添加数据,如果有重复则覆盖
     *
     * @param user
     */
    public static void insertData(User user){
        GreenDaoHelper.getInstance().getDaoSession().getUserDao().insertOrReplace(user);
    }

    /**
     * 删除id等于参数的对象
     *
     * @param id
     */
    public static void deleteData(long id) {
        GreenDaoHelper.getInstance().getDaoSession().getUserDao().deleteByKey(id);
    }

    /**
     * 删除全部数据
     */
    public static void deleteAll() {
        GreenDaoHelper.getInstance().getDaoSession().getUserDao().deleteAll();
    }

    /**
     * 修改数据
     *
     * @param user
     */
    public static void updateData(User user) {
        GreenDaoHelper.getInstance().getDaoSession().getUserDao().update(user);
    }

    /**
     * 查询id小于参数的对象
     *
     * @param id
     * @return
     */
    public static User queryData(long id) {
        return GreenDaoHelper.getInstance().getDaoSession().getUserDao()
        .queryBuilder().where(UserDao.Properties.Id.eq(id)).build().unique();
    }

    /**
     * 查询id小于参数的集合
     *
     * @param id
     * @return
     */
    public static List<User> queryDatas(long id) {
        return GreenDaoHelper.getInstance().getDaoSession().getUserDao()
        .queryBuilder().where(UserDao.Properties.Id.le(id)).build().list();
    }

    /**
     * 查询全部数据
     */
    public static List<User> queryAll() {
        return GreenDaoHelper.getInstance().getDaoSession().getUserDao().loadAll();
    }

猜你喜欢

转载自blog.csdn.net/qq_30203943/article/details/56278435