GreenDao3.0版本基础

简介: greenDAO3基本使用 greenDAO3开始使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的Java-lib工程来存放生成的文件。

greenDAO3基本使用

greenDAO3开始使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的Java-lib工程来存放生成的文件。

 
主工程中build中进行添加
 
// In your root build.gradle file:buildscript {    repositories {        jcenter()        mavenCentral() // add repository    }    dependencies {        classpath 'com.android.tools.build:gradle:2.3.3'        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin    }} // In your app projects build.gradle file:apply plugin: 'com.android.application'applyplugin: 'org.greenrobot.greendao' // apply plugin dependencies {    compile 'org.greenrobot:greendao:3.2.2' // add library}
并且我还做了butterknife因为greedDao是通过注解的方式进行编译
 
指定文件的位置
greendao{
schemaVersion 1
targetGenDir 'src/main/java'
}
 
创建一个实力类相当于Bean类否则不可能生成三个包 类变为一个能够被greenDAO识别的数据库类型的实体
 
@Entity
public class Student {
       @Id
        private long id;
        private String name;
       private int age;
 
       @Generated(hash = 1156616942)
       public Student( long id, String name, int age) {
        this. id = id;
       this. name = name;
     this. age = age; }
 
@Generated(hash = 1556870573)
public Student() { }
public long getId() {
     return this. id; }
     public void setId( long id) {
     this. id = id; }
 
public String getName() {
return this. name; }
 
public void setName(String name) {
this. name = name; }
 
public int getAge() {
return this. age; }
 
public void setAge( int age) {
this. age = age; }
其中的注解的@ID是自增的必须使用long/Long类型的代表主键
}

@Id注解选择 long / Long 属性作为实体ID。在数据库术语中,它是主键。参数自动增量,是使ID值不断增加(不会选用旧值)的标志。

@Property让你定义一个非默认的列名,其属性映射到。如果不存在,greenDAO将在SQL杂交方式使用字段名(大写,下划线,而不是骆驼情况下,例如 customName将成为 CUSTOM_NAME)。注意:您目前只能使用内联常量来指定列名。

@NotNull makes the property a “NOT NULL” column on the database side。通常是有意义的纪念原始类型(long, int, short, byte)与@NotNull,同时具有包装类(Long, Integer, Short, Byte)空的值。

@Transient表明这个字段不会被写入数据库,只是作为一个普通的java类字段,用来临时存储数据的,不会被持久化

@Entity 定义实体

@nameInDb 在数据库中的名字,如不写则为实体中类名

@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束 @Unique:向数据库添加了一个唯一的约束

@createInDb 是否创建表,默认为true,false时不创建

@schema 指定架构名称为实体

@active 无论是更新生成都刷新

@Id主键 Long 型,可以通过@Id(autoincrement = true)设置自增长

@NotNull 不为null

@Unique 唯一约束

@ToMany 一对多

@OrderBy 排序

@ToOne 一对一

@Transient 不存储在数据库中

@generated 由greendao产生的构造函数或方法


数据库侧的表和列名称派生自实体和属性名称。 而不是在Java中使用的骆驼案例样式,默认数据库名称使用大写,使用下划线分隔单词。

例如name在数据库中显示NAME,creationDate 显示CREATION_DATE

 

1.初始化数据库

SQLiteDatabase database = new DaoMaster.DevOpenHelper(this, "stu.db").getWritableDatabase();
DaoMaster master = new DaoMaster(database);

DaoSession daoSession = master.newSession();
studentDao = daoSession.getStudentDao();

1. user-db是数据库名字(可以修改成别的,因为本来就不存在),应为我们之前创建了一个Entity叫做User,所以greenDAO自定帮我们生成的UserDao,拿到了这个UserDao,我们就可以操作User这张表了。

2. 一个DaoMaster就代表着一个数据库的连接;DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,DaoSession可以创建多个,每一个都是属于同一个数据库连接的。


DaoMaster:使用greenDAO的切入点。 DaoMaster保存数据库对象(SQLiteDatabase)并管理特定模式的DAO类(而不是对象)。它有静态方法来创建表或删除它们。它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper实现,在SQLite数据库中创建模式。

DaoSession:管理特定模式的所有可用DAO对象,您可以使用其中一个getter方法获取。 DaoSession还为实体提供了一些通用的持久性方法,如插入,加载,更新,刷新和删除。最后,DaoSession对象也跟踪标识范围。

DAO:数据访问对象(DAO)持续并查询实体。对于每个实体,greenDAO生成DAO。它具有比DaoSession更多的持久化方法,例如:count,loadAll和insertInTx。

实体:持久对象。通常,实体是使用标准Java属性(如POJO或JavaBean)表示数据库行的对象。

2.插入数据

操作都是基于对象的了

Student student = new Student(1, "张三", 10);
//插入
long insert = studentDao.insert(student);
Log.e(TAG, "insert: " + insert);

3.查找数据

 
//查询
     private void query() {
   List<Student> list = studentDao.queryBuilder().where(
    new WhereCondition.StringCondition( StudentDao.Properties. Id . columnName + "=?", "1")).build().list();
 
for (Student student : list) {
    text.setText(student.getName() + "" + student.getAge() + "" + student.getId()); }}

queryBuilder()方法,生成一个查找构造器,可以给构造器添加where条件判断、按照某某字段排序以及查询的条数等基本的数据库操作。list()方法表示查询的结果为一个集合.上述代码查询的就是ID号不等于999,按升序排序,做多5条,返回List类型

list()所有实体被加载到内存中。其结果通常是一个 ArrayList中,最容易使用。

listLazy()实体被装入点播存储器。一旦列表中的一个元素被首次访问,它被加载并高速缓存以供将来使用。必须关闭。

listLazyUncached()一个“虚拟”实体名单:任何接触到从数据库加载其数据的列表元素的结果。必须关闭。

ListIterator()通过懒加载的数据让你通过迭代的结果的。数据不会被缓存。必须关闭
 
 

修改数据

//1.where是查询条件,
//2.unique()表示查询结果为一条数据,若数据不存在,findUser为null。
 
 
 
//重新赋值 String newName= "李四"; private void update() { Student wyk = studentDao.queryBuilder().where(
//找到名字 StudentDao.Properties. Name.eq( "张三")).build().unique(); if(wyk!= null){ wyk.setName( newName); studentDao.update(wyk); text.setText(wyk.getName() + "-" + wyk.getAge() + "-" + wyk.getId()); Toast.makeText(MainActivity. this, "修改成功", Toast. LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity. this, "用户不存在", Toast. LENGTH_SHORT).show(); } }
 

5.删除数据

Student shan = studentDao.queryBuilder().where(
        StudentDao.Properties.Name.eq("李四")).build().unique();
if(shan!=null){
    studentDao.deleteByKey(shan.getId());
    text.setText(shan.getName() + "-" + shan.getAge() + "-" + shan.getId());
    Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
}
原文地址http://www.bieryun.com/3091.html
相关文章
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
2586 0
Android Studio插件版本与Gradle 版本对应关系
|
2月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
97 0
|
6月前
|
存储 人工智能 Java
2024创建boot时 项目SDK11不支持所选的版本Java21 请选择较低版本的java 解决方案
2024创建boot时 项目SDK11不支持所选的版本Java21 请选择较低版本的java 解决方案
94 2
|
6月前
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
145 3
|
Java Android开发
Android如何通过Gradle发布java依赖库(jar)到 jitpack 公共仓库(—)
Android如何通过Gradle发布java依赖库(jar)到 jitpack 公共仓库(—)
348 0
|
Java
在AndroidStudio中设置某项目支持使用Java 8 新特性
在AndroidStudio中设置某项目支持使用Java 8 新特性
582 0
在AndroidStudio中设置某项目支持使用Java 8 新特性
|
开发工具 Android开发 开发者
【Android 应用开发】 Android 各种版本简介 ( Support 支持库版本 | Android Studio 版本 | Gradle 版本 | jcenter 库版本 )
【Android 应用开发】 Android 各种版本简介 ( Support 支持库版本 | Android Studio 版本 | Gradle 版本 | jcenter 库版本 )
295 0
【Android 应用开发】 Android 各种版本简介 ( Support 支持库版本 | Android Studio 版本 | Gradle 版本 | jcenter 库版本 )
|
数据库 Android开发 开发者
GreenDAO系列之(1)入门
# 关于greenDao ## 简介 greenDAO 是一个开源的ORM数据库框架。它帮助开发者从日常的数据库的读写sql语句中解放出来,开发者只需要关注具体的Java对象,就能够进行数据库的访问操作。 ![image](http://greenrobot.org/wordpress/wp-content/uploads/greenDAO-orm-320.png) ## gree
2744 0
|
存储 Java 数据库
小结:greenDAO和LitePal的区别
这两个框架思想都差不多,都是把面向对象映射成关系型语言, 主要区别有以下几个: 1. greenDAO的version等数据库属性设置都是在对应的模型类里面完成的,以Java class的属性变量的形式存储;而LitePal是在另外的一个xml文件中定义。
1438 0
|
Java 开发工具 Android开发
Android Studio 插件——《阿里巴巴 Java 开发规约》的扫描插件
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/78337759 ...
3119 0

相关实验场景

更多