android个人笔记之greendao初体验
来源:互联网 发布:java版qq 编辑:程序博客网 时间:2024/05/24 01:17
一、.as配置环境
1.项目的gradle文件
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}
2.app gradle文件
apply plugin: 'org.greenrobot.greendao'
greendao { schemaVersion 1}
compile 'org.greenrobot:greendao:3.2.0'compile 'net.zetetic:android-database-sqlcipher:3.5.4'二、初始化
1.建立实体类,然后build 然后make project@Entitypublic class User { @Id private Long id; private String name; private String sex; private String age;}注意事项:@Entity 必须要@Id 必须要相当于主键,赋值时可以不用管,构造函数传null也行
2.自己写一个Application,如果数据库不加密的话变量设置成false,且不需要引入compile 'net.zetetic:android-database-sqlcipher:3.5.4'这个包
public class App extends Application { /** A flag to show how easily you can switch from standard SQLite to the encrypted SQLCipher. */ public static final boolean ENCRYPTED = false; private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); MopenHelper helper = new MopenHelper(this, ENCRYPTED ? "notes-db-encrypted" : "notes-db"); Database db = ENCRYPTED ? helper.getEncryptedWritableDb("super-secret") : helper.getWritableDb(); daoSession = new DaoMaster(db).newSession(); } public DaoSession getDaoSession() { return daoSession; }}
注意事项:MopenHelper是自己定义的继承自,此处数据库升级操作需要。点击make project 会自动生成2个文件
DaoSession.javaDaoMaster.java
这2个文件和实体类在一个文件夹下,
在gradlegreendao { schemaVersion 1}中这里配置路径,如果不配置,默认和实体类一个文件夹,默认隐藏文件,但是如果在自己的appclition中像点击源码方式查看还是能进入这2个文件的,如果配置了路径则不会隐藏。
3.使用
在activity中
private UserDao userDao;oncreate中获取对象
App application = (App) getApplication();DaoSession daoSession = application.getDaoSession();userDao = daoSession.getUserDao();
操作:
switch (v.getId()){ case R.id.btn001://查询 List<User> users = userDao.loadAll(); StringBuilder stringBuilder=new StringBuilder(); if (users.size()>0){ for(int i=0;i<users.size();i++){ User user = users.get(i); stringBuilder.append(user.getName()+""+user.getSex()+"id:"+user.getId()+"age:"+user.getAge()); } text001.setText(stringBuilder.toString()); } //Toast.makeText(this, BuildConfig.appKey,Toast.LENGTH_SHORT).show(); break; case R.id.btn002://修改 User userx=new User(); userx.setId(1L); userx.setName("hu"); userx.setSex("男"); userDao.update(userx); break; case R.id.btn003://删除 //userDao.deleteByKey(1l); break; case R.id.btn004://增加 User userz=new User(null,"hu11","女","18"); userDao.insert(userz); break; default:break;}更多操作自己摸索 不复杂的
四、关于数据库升级
继承DaoMaster.DevOpenHelper
然后重写onUpgrade方法。在里面进行升级操作
例子:此处user 本来只有private Long id; private String name; private String sex;这个三个字段。如何加入一个新的字段age,且保留原始数据首先直接把user实体类中自动生成的代码全部删掉,然后添加user字段,然后重新make project。然后在在自定义的public class MopenHelper extends DaoMaster.DevOpenHelper { public MopenHelper(Context context, String name) { super(context, name); } public MopenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) { super(context, name, factory); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { if(oldVersion<=1){ db.execSQL(" ALTER TABLE User ADD COLUMN age"); } }}注意事项:onUpgrade里面原来有一句代码,super(xxx,xxx,xx)这个是调用父类的onUpgrade方法,此处必须删掉,因为父类里面是先删除全部表,再新建全部表,显然不能保存
原始数据库数据,这也是必须自定义MopenHelper的原因。此处我们执行自己的sql逻辑,原始数据由于没有age字段,在新表里面age就是null。
最后把gradle中的
greendao { schemaVersion 1}版本号 改成比1大的就行了,然后升级app就会发现原始数据并没有被删除
0 0
- android个人笔记之greendao初体验
- greenDAO 使用初体验
- GreenDao初体验
- GreenDao初体验——GreenDao与Android最新版本兼容性问题
- android 数据库之greendao
- Android ORM之greenDao
- 我的Android入门之路:一、初步接触之GreenDAO学习使用体验
- 【Android 进阶】ORM 框架之 greenDAO学习笔记
- Android 之初体验
- Android学习笔记之MVP架构初体验
- Android ORM之GreenDao学习
- Android之greenDao的使用
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- android数据保存之greendao
- 我的第一篇博客
- java 场景总结(一)
- gem5学习7——gem5仿真器启动过程
- ionic ActionSheet(上拉菜单)
- Python每日一练----2.基本数学函数
- android个人笔记之greendao初体验
- spring Bean使用案例 无参数构造方式
- Android Things 开发
- MATLAB获取字符串中两个特定字符之间的内容
- 那些相见恨晚的android studio快捷键
- windowsform DataGridView
- java kettle v2
- Maven导入Servlet和JSP jar包 解决web-app_3_0.xsd web-common_3_0.xsd文件有错误
- The Machine Learning Framework--实践