飞道的博客

greenDAO优点及使用详解

238人阅读  评论(0)

一、关于greenDAO

greenDAO是一个开源的Android ORM,它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。

                       

                               ORM图

二、greenDAO优点

  • 最佳性能 (可能是 Android 中最快的 ORM) ,基准测试也是开源的;
  • 易于使用的功能强大的 api,涵盖关系和连接;
  • 最小的内存消耗;
  • 小型库大小(< 100KB) ,以保持较低的构建时间,并避免65k 方法限制;
  • 数据库加密:greenDAO 支持 SQLCipher 来保证用户数据的安全;
  • 强大而活跃的社区交流支持,相关资料比较完善;
  • 许多顶级的Android应用程序都依赖greenDAO,其中一些应用程序的安装量超过1000万,更证明了其可靠性。

三、 引入greenDAO

首先在项目目录下的build.gradle中配置


  
  1. repositories {
  2. // GreenDao仓库
  3. mavenCentral()
  4. }

  
  1. dependencies {
  2. // GreenDao插件
  3. classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
  4. }

然后在app目录下的build.gradle中配置


  
  1. //GreenDao插件
  2. apply plugin: 'org.greenrobot.greendao'

  
  1. dependencies {
  2. implementation 'org.greenrobot:greendao:3.2.2'
  3. }

  
  1. android {
  2. greendao {
  3. schemaVersion 1 //数据库版本号 每次升级数据库都需要改变版本,只能增加
  4. daoPackage 'com...green' //设置DaoMaster、 DaoSession、Dao包名
  5. targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
  6. }
  7. }

四、创建数据库及增删改查操作

先创建一个实体类


  
  1. @Entity
  2. public class UserIm {
  3. @Id
  4. private Long id;
  5. private String userId;
  6. private String name;
  7. private String url;
  8. }

其中Long  id对应数据表中的主键,是一条数据的唯一标识。

创建完之后,点击Make Project图标

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

在Application中初始化


  
  1. private DaoMaster daoMaster;
  2. private static DaoSession daoSession;
  3. private DaoMaster.DevOpenHelper devOpenHelper= null;
  4. devOpenHelper= new DaoMaster.DevOpenHelper(getApplicationContext(), "数据库名称.db", null);
  5. //实例化DaoMaster对象
  6. daoMaster= new DaoMaster(devOpenHelper.getWritableDb());
  7. //实例化DaoSession对象
  8. daoSession=daoMaster.newSession();
  9. //通过此方法,进行增删改查
  10. public static DaoSession getDaoSession(){
  11. return daoSession;
  12. }

插入数据


  
  1. UserImDao userDao = ServerObserver.getDaoSession().getUserImDao();
  2. userDao.insert( new UserIm( null,userId, name, url));

删除数据


  
  1. //清空所有数据
  2. DaoSession daoSession = ServerObserver.getDaoSession();
  3. Database database = daoSession.getUserImDao().getDatabase();
  4. DaoMaster.dropAllTables(database, true);
  5. DaoMaster.createAllTables(database, true);
  6. //删除某一条数据
  7. userDao.deleteByKey(id);

修改数据


  
  1. List<UserIm> userIms; //所有的user
  2. userIms = userDao.queryBuilder(). where(UserImDao.Properties.UserId.eq(userId)).list();
  3. if (userIms.size()> 0){
  4. //改
  5. userIms. get( 0).setName(title);
  6. userIms. get( 0).setUrl(url);
  7. userDao.update(userIms. get( 0));
  8. }

查看数据


  
  1. List<UserIm> userIms; //所有的user
  2. userIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(targetId)).list();

 


转载:https://blog.csdn.net/baidu_40202612/article/details/114678698
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场