GreenDao的使用

来源:互联网 发布:nginx 500错误日志 编辑:程序博客网 时间:2024/06/03 09:20
1.
配置两个依赖
compile 'de.greenrobot:greendao:2.1.0'
compile 'de.greenrobot:greendao-generator:2.1.0'


2.
创建自定义的DAOGenerater,指定数据库相关配置并生成相关类




public class CustomDAOGenerater {
    public static void main(String[] args) throws Exception {
        // 第一个参数为数据库版本
        //第二个参数为数据库的包名
        Schema schema = new Schema(1, "com.example.greendao");// 生成的文件夹
        // 创建表,参数为表名
        Entity entity = schema.addEntity("Info");//生成类,类名
        // 为表添加字段
        entity.addIdProperty();// 该字段为id
        entity.addStringProperty("name");// String类型字段
        entity.addIntProperty("age");//Int类型字段
        entity.addStringProperty("tel");// String类型字段


        // 生成数据库相关类
        //第二个参数指定生成文件的本次存储路径,AndroidStudio工程指定到当前工程的java路径
        new DaoGenerator().generateAll(schema, "C:\\Users\\Alpha\\AndroidStudioProjects\\GreenDaoDemo\\app\\src\\main\\java");
    }
}


创建数据库  
  DaoMaster.OpenHelper helper =new DaoMaster.DevOpenHelper(this,"Student.db",null);
      SQLiteDatabase database=helper.getWritableDatabase();
      DaoMaster master=new DaoMaster(database);
      DaoSession session = master.newSession();
      dao=session.getStudentDao();


3.在需要的情况下以单例的形势写一个数据库的管理类


public class DBManager {
    private final static String dbName = "user.db";
    private static DBManager mInstance;
    private DaoMaster.DevOpenHelper openHelper;
    private Context context;


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


    /**
     * 获取单例引用
     *
     * @param context
     * @return
     */
    public static DBManager getInstance(Context context) {
        if (mInstance == null) {
            synchronized (DBManager.class) {
                if (mInstance == null) {
                    mInstance = new DBManager(context);
                }
            }
        }
        return mInstance;
    }


    /**
     * 获取可写数据库
     */
    private SQLiteDatabase getWritableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getWritableDatabase();
        return db;
    }


    /**
     * 插入数据
     */
    public long insertUser(user user) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        userDao userDao = daoSession.getUserDao();
        long l = userDao.insertOrReplace(user);
        return l;


    }


    /**
     * 获取可读数据库
     */
    private SQLiteDatabase getReadableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getReadableDatabase();
        return db;
    }


    /**
     * 查询用户列表
     */
    public List<user> queryUserList() {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        userDao userDao = daoSession.getUserDao();
        QueryBuilder<user> qb = userDao.queryBuilder();
        List<user> list = qb.list();
        return list;
    }


    /**
     * 查询指定用户
     */
    public List<user> queryUserName(String name) {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        userDao muserDao = daoSession.getUserDao();
        QueryBuilder<user> qb = muserDao.queryBuilder();
        Query<user> build = qb.where(userDao.Properties.Name.eq(name)).build();
        List<user> list = build.list();
        return list;
    }




}






4.然后就是在各个类中调用其增删改查的方法

原创粉丝点击