ORM框架greenDAO搭建

    xiaoxiao2021-12-03  70

    简介

    greenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询;

    greenDAO搭建(Andorid Studio)

    Step1:创建greenDAO工程

    创建java工程用来生成DaoMaster,DaoSession,DAO文件,实体文件;

     DaoMaster:一看名字就知道它是Dao中的最大的官了。它保存了sqlitedatebase对象以及操作DAO classes(注意:不是对象)。其提供了一些创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架; DaoSession:会话层。操作具体的DAO对象(注意:是对象),比如各种getter方法; XXXDao:实际生成的某某DAO类,通常对应具体的java类,比如NoteDao等。其有更多的权限和方法来操作数据库元素; XXXEntity:持久的实体对象。通常代表了一个数据库row的标准java properties;

    Step2:配置greenDAO工程build.gradle

    apply plugin: 'java' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //greendao依赖库 compile 'de.greenrobot:greendao-generator:2.1.0' compile 'de.greenrobot:greendao:2.1.0' }

    Step3:生成greenDAO代码

    注:生成一对一或一对多表关系请参考这个 链接

    public class MyKBang { public static void main(String args[]) throws Exception { //生成Greendao相关文件,需要参数版本号,生成bean类放的目录 //数据库变化重新生成,版本号需要加1或都大于之前 Schema schema = new Schema(1, "com.kbang.convenientlife.bean"); //设置一下生成的三个java文件(DaoMaster,DaoSession,***Dao)的目录 schema.setDefaultJavaPackageDao("com.kbang.convenientlife.greendao"); initUserBean(schema); //生成到那个路径 new DaoGenerator().generateAll(schema, "../android_kb_shangchao/kbang/src/main/java"); } /** * 生成实体配置 * 1.添加属性支持基本数据类型 * @param schema */ private static void initUserBean(Schema schema) { //用户信息表名 Entity userBean = schema.addEntity("UserInfo"); // 表重命名 //userBean.setTableName("phone"); //用来实现序列化的接口 userBean.implementsSerializable(); //方式一 建立自增的主键 //userBean.addLongProperty("id").primaryKey().index().autoincrement(); //方式二 建立自增的主键 userBean.addIdProperty(); userBean.addStringProperty("code"); userBean.addStringProperty("os"); userBean.addStringProperty("osVersion"); userBean.addStringProperty("name"); userBean.addStringProperty("phoneLocation"); userBean.addStringProperty("attachmentPath"); userBean.addStringProperty("cityId"); userBean.addStringProperty("sex"); userBean.addStringProperty("attachmentId"); } }

    Step4:整合到android工程

    将greenDAO工程生成文件拷贝到android项目中,存放路径跟生成路径保持一致; 在android项目build.gradle引入依赖库:

    compile 'de.greenrobot:greendao-generator:2.1.0' compile 'de.greenrobot:greendao:2.1.0'

    创建简单类测试一下:

    DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "Test-db", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); UserInfo note = new UserInfo(); userInfo.setName("kais"); userInfo.setSex("男"); noteDao.insert(note); //插入数据 noteDao.deleteByKey(id);//删除数据

    为升级数据库在这自己继承封装DaoMaster.DevOpenHelper代码如下: DatabaseHelper.java

    public class DatabaseHelper extends DaoMaster.OpenHelper { public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) { super(context, name, factory); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch (oldVersion){ case 1: break; } } }

    DatabaseLoader.java

    public class DatabaseLoader { //数据库名称 private static final String DATABASE_NAME = "Test-db"; //用来获取Dao的 private static DaoSession daoSession; /** * 在Application中调用,初始化数据库 * * @param context */ public static void init(Context context) { //使用自定义的OpenHelper的到SQLiteDatabase DatabaseHelper helper = new DatabaseHelper(context, DATABASE_NAME, null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); } public static DaoSession getDaoSession() { return daoSession; } }

    grenDAO增删改查

    //常用操作 public long insert(T entity)//增 public void delete(T entity)//删 public void update(T entity)//改 //load查询 public T load(K key)//根据主键加载实体对象 public T loadByRowId(long rowId)//根据rowId加载实体对象 public List<T> loadAll()//加载所有有效实体对象 //query查询 public QueryBuilder<T> queryBuilder()//用于构建查询的类 public List<T> queryRaw(String where, String... selectionArg)//根据条件查询
    转载请注明原文地址: https://ju.6miu.com/read-680027.html

    最新回复(0)