Android 数据库(4)-----GreenDao3
来源:互联网 发布:美工刀片型号 编辑:程序博客网 时间:2024/06/06 05:20
GreenDao3 加密
1.gradle配置
配置过程参考官方: https://github.com/greenrobot/greenDAO
根目录下的gradle
buildscript { repositories { jcenter() mavenCentral() //add one } dependencies { classpath 'com.android.tools.build:gradle:2.3.2' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' //add two }}
app模块下的gradle
apply plugin: 'org.greenrobot.greendao' //add three compile 'org.greenrobot:greendao:3.2.2' //add four//一些配置文件,决定了数据库版本和自动生成类的信息greendao{ schemaVersion 1 //数据库版本 daoPackage 'com.example.leo.myapplication.greendao.gen' //自动生成类的包名 targetGenDir 'src/main/java' //自动生成类的路径}
2.创建javabean类
//@Entity表明该类是持久化的类@Entity public class User { //@Id选择一个long或Long类型的属性作为该实体所对应数据库中数据表的主键 @Id(autoincrement = true) private long id; private String name; private int age; //下面两个方法构造方法是自动生成的 用@Generated来注解了 @Generated(hash = 446251977) public User(long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 586692638) public User() { } ... // getter setter toString方法}
创建完javabean后直接从新编译一次就会在我们指定的路径下生成三个类
3.CURD
数据库的初始化操作,我这里简单实践就直接写在了onCreate()中
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this , "user.db"); //数据库名称DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());DaoSession daoSession = daoMaster.newSession();userDao = daoSession.getUserDao(); //后面就使用这个变量进行CURD
Create
//注意按照下面这个方法很容易发生异常,因为主键冲突了User user = new User(1, "leo" , 18); userDao.insert(user);//通过主键检查我们要插入的数据是否重复,当数据库没有时我们再进行插入User user = new User(1,"leo" , 18);if(userDao.queryBuilder().where(UserDao.Properties.Id.eq(1)).list().size() == 0 ){ userDao.insert(user);}
Updata
//检查数据库中是否存在要升级的数据,当返回的结果不为nullList<User> findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq("leo")).build().list();if(findUser != null){ for(int i = 0 ; i < findUser.size();i++) { findUser.get(i).setName("cat"); userDao.update(findUser.get(i)); Log.e(TAG, "onClick: " + "update ok"); }}
Delete
User findUser1 = userDao.queryBuilder().where(UserDao.Properties.Name.eq("leo")).build().unique();if(findUser1 != null){ userDao.deleteByKey(findUser1.getId()); Log.e(TAG, "onClick: "+"remove ok" );}
Retrieve
List<User> lists = userDao.queryBuilder() .where(UserDao.Properties.Id.notEq(999)) //主键不等于999 .orderAsc(UserDao.Properties.Id) //返回结果通过注解排序 .limit(5) //只返回前面5条数据 .build().list(); for(int i = 0 ; i < lists.size() ; i++){ Log.e(TAG, "onClick: "+lists.get(i).toString() );}
4.加密
官方地址 : http://greenrobot.org/greendao/documentation/database-encryption/
添加依赖到gradle
compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
数据库初始化变动一行代码
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this , "user.db");DaoMaster daoMaster = new DaoMaster(devOpenHelper.getEncryptedReadableDb("leo is sun")); //改动后,getEncryptedReadableDb的参数是密码 //DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase()); 改动前DaoSession daoSession = daoMaster.newSession();userDao = daoSession.getUserDao();
Litepal和GreenDao3相同点
都是基于SQLite的ORM的的数据库
存在配置文件,litepal存在litepal.xml文件,Greendao在gradle里面直接配置
可以进行数据加密
Litepal和GreenDao3差异
Litepal的加密支持AES和MD5 , 使用AES可以解密出内容,使用MD5无法解密,但是加密后的内容通过sqlite3可以查看,但是GreenDao3使用了加密就无法查看数据库信息,包括几个表也无法查看
大小,greendao-3.2.0.jar的大小是136kb,litepal-1.6.0.jar的大小是176kb相对来说greendao体积更小
greendao官方的说法是速度最快,相对性能要求不是很严格的可以自由选择
阅读全文
0 0
- Android 数据库(4)-----GreenDao3
- Android数据库GreenDAO3.2.2的使用(一,集成数据库)
- Android数据库GreenDAO3.2.2的使用(二,数据库使用)
- Android数据库GreenDAO3.2.2的使用(四、数据库升级)
- android stdudio 数据库框架greendao3.2使用
- Android之数据库框架greenDAO3.0使用指南
- Android之数据库框架greenDAO3.0使用指南
- Android数据库系列之GreenDao3.0+
- Android数据库GreenDAO3.2.2的使用(三,GreenDao操作外部数据库----操作.db数据库)
- (二)GreenDao3.0的数据库升级
- Android数据库GreenDAO3.2.2的使用(五,SQLiteConstraintException因为主键报错)
- 玩转Android之数据库框架greenDAO3.0使用指南
- 玩转Android之数据库框架greenDAO3.0使用指南
- Android数据库框架——GreenDao3.2的配置 升级
- 玩转Android之数据库框架greenDAO3.0使用指南
- 玩转Android之数据库框架greenDAO3.0使用指南
- 玩转Android之数据库框架greenDAO3.0使用指南
- Android数据库——GreenDAO3.2.2的使用
- Android-提取应用的签名和包名
- Ueditor字体背景颜色选项颜色修改
- 考查频率最高的吉林八景
- 【OpenCV入门指南】第一个OpenCV程序
- index
- Android 数据库(4)-----GreenDao3
- Irrlicht 源码学习笔记 【position2d.h】 【vector2d.h】
- 【SSLGZ 2688】2017年8月14日提高组T2 温度
- [深入理解JVM 二]---Java的编译过程
- 关于微信登录以及微博最近jar包分享小结(补充篇)
- 素数
- React初级入门环境搭建
- js判断undefined类型,undefined,null, 的区别详细解析
- hdu1257 (找最长不上升子序列的条数)