当前位置: 首页 > news >正文

greenDao的使用文档

介绍:

greenDAO 是一款轻量级的 Android ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不在需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小。适合存储大量的数据。

轻量级数据库是指,一种用于存储和管理小型数据集的数据库系统。它们可以在普通的个人电脑上运行,而不需要强大的服务器设备。它们通常只需要很少的内存和存储空间,因此最适合小型应用。轻量级数据库的例子包括SQLite、MongoDB和Appache Cassandra。

集成的步骤:

在APP下的gradle中,

 implementation 'org.greenrobot:greendao:3.3.0'  // greendao

greendao{schemaVersion 1 //版本号targetGenDir 'src/main/java'   //greenDao实体类包文件夹daoPackage 'com.example.teleprompter.greenDao'  //输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下)}

在集成的时候,我的项目级gradle是这样的:

在项目级别的gradle中,

classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'

发现在项目级的gradle和之前的格式不同。

plugins {id 'com.android.application' version '7.2.1' apply falseid 'com.android.library' version '7.2.1' apply false
}task clean(type: Delete) {delete rootProject.buildDir
}

看官网后知道,是2022年1月的Gradle7.1.0版本做的更新导致的,buildscript闭包可以放在plugins闭包前面,最后我的项目级gradle是这样的:

创建实体类

然后通过在实体类上加注解来达到生成对应的数据模型。

例如:

@Entity
public class TelePromterBean {@Id(autoincrement = true)private Long id;@Propertyprivate int number;//页面数量@Propertyprivate String name;//页面名字@Propertyprivate int fontSize;//字号//  get()/set()}

1. @Entity:标记一个实体类,声明一个表,一个实体类只能定义一张表,可以添加如下参数:(1)nameInDb:表名(2)indexes:定义索引,可以跨越多个列(3)createInDb:是否创建表(4)schema:定义架构名称(5)active:定义实体类有效性,默认为true

2. @Id:定义一列主键,可以添加如下参数:(1)nameInDb:定义列名(2)autoincrement:定义是否自增(3)generatedId:如果主键没有显示的赋值,则自动生成的

3. @Property:定义属性列,可以添加如下参数:(1)nameInDb:定义列名(2)not null:定义是否非空(3)unique:定义是否唯一(4)index:定义是否索引

4. @ToOne:定义一对一关系,可以添加如下参数:(1)nameInDb:定义列名(2)unique:定义是否唯一(3)not null:定义是否非空(4)index:定义是否索引

5. @ToMany:定义一对多关系,可以添加如下参数:(1)nameInDb:定义列名(2)unique:定义是否唯一(3)not null:定义是否非空(4)index:定义是否索引(5)orderBy:定义排序规则

实体类创建完成后,同步一下项目 然后就会生成如下:

增删改查


public class DBManger {private static final String TAG = "DBManger";private static final String dbName = "tele.db";private static DBManger mInstance;private final Context context;private DaoMaster.DevOpenHelper openHelper;public static DaoSession daoSession;public DBManger(Context context) {this.context = context;openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);Database db = openHelper.getWritableDb();daoSession = new DaoMaster(db).newSession();}//单例public static DBManger getInstance(Context context) {if (mInstance == null) {synchronized (DBManger.class) {if (mInstance == null) {mInstance = new DBManger(context);}}}return mInstance;}//可读数据库private SQLiteDatabase getReadableDatabase() {if (openHelper == null) {openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);}SQLiteDatabase db = openHelper.getReadableDatabase();return db;}//可写数据库private SQLiteDatabase getWritableDatabase() {if (openHelper == null) {openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);}SQLiteDatabase db = openHelper.getWritableDatabase();return db;}//插入public void insert(TelePromterBean promterBean) {DaoMaster daoMaster = new DaoMaster(getWritableDatabase());DaoSession daoSession = daoMaster.newSession();TelePromterBeanDao dao = daoSession.getTelePromterBeanDao();dao.insert(promterBean);}//插入数据集合public void insertUserList(List<TelePromterBean> promterBeanList) {if (promterBeanList == null || promterBeanList.isEmpty()) {return;}DaoMaster daoMaster = new DaoMaster(getWritableDatabase());DaoSession daoSession = daoMaster.newSession();TelePromterBeanDao dao = daoSession.getTelePromterBeanDao();dao.insertInTx(promterBeanList);}//删除数据public void delete(TelePromterBean promterBean) {DaoMaster daoMaster = new DaoMaster(getWritableDatabase());DaoSession daoSession = daoMaster.newSession();TelePromterBeanDao dao = daoSession.getTelePromterBeanDao();dao.delete(promterBean);}//更改public void update(TelePromterBean promterBean) {Log.d(TAG, "update: " + promterBean);DaoMaster daoMaster = new DaoMaster(getWritableDatabase());DaoSession daoSession = daoMaster.newSession();TelePromterBeanDao dao = daoSession.getTelePromterBeanDao();dao.update(promterBean);}//查询public ArrayList<TelePromterBean> query() {DaoMaster daoMaster = new DaoMaster(getReadableDatabase());DaoSession daoSession = daoMaster.newSession();TelePromterBeanDao dao = daoSession.getTelePromterBeanDao();QueryBuilder<TelePromterBean> qb = dao.queryBuilder();ArrayList<TelePromterBean> list = (ArrayList<TelePromterBean>) qb.list();
//        for (int i = 0; i < list.size(); i++) {
//            list.get(i).setIsFlush(false);
//        }return list;}
}

在项目中使用:

TelePromterBean promterBean = new TelePromterBean(null, i, "", 20, "", false);DBManger.getInstance(MainActivity.this).insert(promterBean);DBManger.getInstance(MainActivity.this).delete(promterBean);DBManger.getInstance(MainActivity.this).update(promterBean);DBManger.getInstance(MainActivity.this).query();

http://www.lryc.cn/news/6600.html

相关文章:

  • 基于JAVA+SpringBoot+LayUI+Shiro的仓库管理系统
  • 金三银四面试必看,复盘字节测试开发面试:一次测试负责人岗位面试总结
  • 【算法自由之路】 贪心算法
  • Scratch少儿编程案例-水果忍者-学生作业
  • 7.Docker Compose
  • GitHub访问问题与 Steam++下载及使用(适合小白)
  • Oracle对象——视图之简单视图与视图约束
  • SAP模块常用增强总结
  • 当make执行遇到 Arguments too long
  • 《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
  • Maven基础
  • C++入门:初识类和对象
  • BERT在CNN上也能用?看看这篇ICLR Spotlight论文丨已开源
  • 【MFC】模拟采集系统——界面设计(17)
  • 锐捷(十五)mpls vxn跨域optionc场景
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(七)
  • redis 主从复制
  • 如何用Redis实现延迟队列
  • 项目文件相关总结
  • ZooKeeper集群搭建步骤
  • 网际协议IP
  • Python 语言参考手册、教程、标准库
  • 数据库连接池 BoneCP、HikariCP 等
  • 博客系统 SSM 超强硬核良心推荐之第一弹 - 预备工作
  • [Web] 简单瀑布流布局实现
  • 多线程之死锁,哲学家就餐问题的实现
  • UTF-8编码
  • likeshop单商户SaaS版V1.8.2说明!
  • 算法训练营 day46 动态规划 最后一块石头的重量 II 目标和 一和零
  • nginx-host绕过实例复现