Android数据库GreenDao2.1使用和缺陷
2017-07-08 10:25
495 查看
1.依赖:
2.创建自定义的DAOGenerater,指定数据库相关配置并生成相关类
3. 在Application中通过DaoMaster.DevOpenHelper初始化数据库
4.在配置清单文件中配置一下自定义的Application
5.在BaseActivity BaseFragment类中获取全局的Dao
6.增,删,改,查
7.数据库的更新:
http://www.open-open.com/lib/view/open1452143252855.html
Green的缺陷:
1.因为需要获取Dao类,但是如果再Adapter的Holder中去联网请求,那么数据库查询就不是太方便
2.因为默认数据库升级,每次都会删除所有的表,再重新建立表,所以,在于以前的App不是用的GreenDao,后期修改成GreenDao,对于刚入门的朋友还是有些难已把原本的数据库数据进行保留的
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 { //创建模型对象 参数1:数据库的版本号,参数2:生成的文件所放的位置,工程包名+要放入的包名 Schema schema = new Schema(1, "com.example.sunshine.greendao.Dao"); // 创建表,参数为表名 Entity userInfo = schema.addEntity("UserInfo"); // 为表添加字段,这里没有自动增长 userInfo.addIdProperty(); userInfo.addStringProperty("name");// String类型字段 userInfo.addIntProperty("age");//Int类型字段 userInfo.addStringProperty("tel");// String类型字段 // 生成数据库相关类 //第二个参数指定生成文件的本次存储路径, 他会自动拼接,这个路径不用修改 try { new DaoGenerator().generateAll(schema, "./app/src/main/java"); } catch (Exception e) { e.printStackTrace(); } } }
3. 在Application中通过DaoMaster.DevOpenHelper初始化数据库
public UserInfoDao userInfoDao; @Override public void onCreate() { super.onCreate(); //设置数据库的名称 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(< 4000 span class="hljs-keyword">this, "user.db", null); // 获取实例对象 SQLiteDatabase database = helper.getWritableDatabase(); // 获取DaoMaster对象 DaoMaster daoMaster = new DaoMaster(database); // 获取Session对象 DaoSession daoSession = daoMaster.newSession(); //清空一下内存缓存session会给entities带来缓存,导致删除失败bug //例如,数据库存储的是用户登录信息, // 当用户退出登录时,页面关闭,上个页面会立马查询数据库,会因为缓存,导致数据库删除失败 daoSession.clear(); userInfoDao = daoSession.getUserInfoDao();
4.在配置清单文件中配置一下自定义的Application
android:name=".App"
5.在BaseActivity BaseFragment类中获取全局的Dao
//获取全局的daoSession然后通过daoSession获取mdataDao App application = (App) getApplication(); userInfoDao = application.userInfoDao;
6.增,删,改,查
@Override public void onClick(View v) { switch (v.getId()) { case R.id.inster://插入数据 UserInfo info = new UserInfo(); info.setAge(18); info.setName("张三"); info.setId(1L); info.setTel("15517108393"); userInfoDao.insert(info); break; case R.id.updata: //更新的还是第一条数据,他会覆盖原来的数据 //或者不查询直接创建一个新的对象,只要主键重复,他就会覆盖原来的这条数据 load = userInfoDao.load((long) 1); load.setName("李四"); userInfoDao.update(load); break; case R.id.query: //查询第一条数据 load = userInfoDao.load((long) 1); Log.e("eeee",load.getName()); break; case R.id.delect: // 删--通过key删除 userInfoDao.deleteByKey(1L); //删除所有 // userInfoDao.deleteAll();//删除数据库中所有数据 break; } }
7.数据库的更新:
http://www.open-open.com/lib/view/open1452143252855.html
//1.1.在根目录的build.gradle文件的repositories内添加如下代码:
allprojects { repositories { ... maven { url "https://jitpack.io" } } }
2.添加依赖
dependencies { compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v0.0.5' }
3. 在DaoMaster类的onUpgrade方法添加如下代码即可,参数为所有的Dao类 ,注释掉原来这个方法中的两行代码 参数为所有生成的Dao类
MigrationHelper.getInstance().migrate(db,TestDataDao.class,TestData2Dao.class,TestData3Dao.class);
Green的缺陷:
1.因为需要获取Dao类,但是如果再Adapter的Holder中去联网请求,那么数据库查询就不是太方便
2.因为默认数据库升级,每次都会删除所有的表,再重新建立表,所以,在于以前的App不是用的GreenDao,后期修改成GreenDao,对于刚入门的朋友还是有些难已把原本的数据库数据进行保留的
相关文章推荐
- Android数据库ORM框架:GreenDao在AndroidStudio中使用
- Android数据库操作第三方库GreenDao的使用
- Android greenDao数据库的简单使用(一)
- android 数据库greenDao的简单使用
- Android ORM数据库之GreenDao使用教程及源码分析
- Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(android-studio开发)
- Android数据库框架GreenDao封装使用,易理解、易扩展
- Android数据库之greendao的基本使用
- Android GreenDao数据库框架使用
- [置顶] Android数据库GreenDAO3.2.2的使用(三,GreenDao操作外部数据库----操作.db数据库)
- Android greenDao 数据库的使用(三)
- Android数据库框架GreenDAO的使用&Demo
- Android GreenDao使用详解——(下)数据库升级
- Android GreenDao使用总结(包括模型生成、增删改查、修改存储路径、数据库更新升级和加解密数据库)
- Android数据库操作--greenDAO的入门使用
- Android中数据库操作框架greenDAO介绍与使用
- Android GreenDao使用(一)创建数据库
- Android操作数据库的框架-GreenDao基本使用记录
- Android Studio平台使用GreenDao操作数据库
- 【Android】ORM数据库框架之GreenDao快速入门与使用