首页 > IT职业 > IT图书 > greenDAO优点及使用详解
greenDAO是一个开源的Android ORM,它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。
最佳性能 (可能是 Android 中最快的 ORM) ,基准测试也是开源的;
易于使用的功能强大的 api,涵盖关系和连接;
最小的内存消耗;
小型库大小(数据库加密:greenDAO 支持 SQLCipher 来保证用户数据的安全;
强大而活跃的社区交流支持,相关资料比较完善;
许多顶级的Android应用程序都依赖greenDAO,其中一些应用程序的安装量超过1000万,更证明了其可靠性。
首先在项目目录下的build.gradle中配置
repositories {// GreenDao仓库mavenCentral()
}
dependencies {// GreenDao插件classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'}
然后在app目录下的build.gradle中配置
//GreenDao插件apply plugin: 'org.greenrobot.greendao'
dependencies {implementation 'org.greenrobot:greendao:3.2.2'}
android {greendao {schemaVersion 1 //数据库版本号 每次升级数据库都需要改变版本,只能增加daoPackage 'com...green' //设置DaoMaster、 DaoSession、Dao包名targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录}}
先创建一个实体类
@Entitypublic class UserIm {@Idprivate Long id;private String userId;private String name;private String url;
}
其中Long id对应数据表中的主键,是一条数据的唯一标识。
创建完之后,点击Make Project图标

会自动生成get、set方法,同时在上述填写的目录中生成Dao文件

在Application中初始化
private DaoMaster daoMaster;private static DaoSession daoSession;private DaoMaster.DevOpenHelper devOpenHelper=null;
devOpenHelper=new DaoMaster.DevOpenHelper(getApplicationContext(),"数据库名称.db",null);//实例化DaoMaster对象daoMaster=new DaoMaster(devOpenHelper.getWritableDb());//实例化DaoSession对象daoSession=daoMaster.newSession();//通过此方法,进行增删改查public static DaoSession getDaoSession(){return daoSession;
}
插入数据
UserImDao userDao = ServerObserver.getDaoSession().getUserImDao(); userDao.insert(new UserIm(null,userId, name, url));
删除数据
//清空所有数据DaoSession daoSession = ServerObserver.getDaoSession(); Database database = daoSession.getUserImDao().getDatabase(); DaoMaster.dropAllTables(database, true); DaoMaster.createAllTables(database, true);//删除某一条数据userDao.deleteByKey(id);
修改数据
ListuserIms; //所有的useruserIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(userId)).list();if (userIms.size()>0){//改userIms.get(0).setName(title); userIms.get(0).setUrl(url); userDao.update(userIms.get(0)); }
查看数据
ListuserIms; //所有的useruserIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(targetId)).list();
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1369/viewspace-2807288/ ,如需转载,请注明出处,否则将追究法律责任。