一、Android studio配置gradle
1.首先在根build.gradle中添加如下:
// 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 } }
2.在项目的build.gradle中添加依赖如下:
// In your app projects build.gradle file: apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // apply plugin dependencies { compile 'org.greenrobot:greendao:3.2.2' // add library }
3.定义greendao文件存储位置,版本等等
/** 配置GreenDao基本参数 * 1. schemaVersion:当前版本的数据库模式。这被OpenHelpers类用于在模式版本之间迁移。如果更改了实体/数据库模式,则必须增加该值。默认为1。 2. daoPackage:生成的Dao,DaoMaster和DaoSession的包名称。 默认为源实体的包名称。 3. targetGenDir:生成源应存储在的位置。 默认为构建目录( build / generated / source / greendao)中生成的源文件夹。 4. generateTests: 设置为true以自动生成单元测试。 5. targetGenDirTests: 应存储生成的单元测试的基本目录。默认为 src / androidTest / java。 */ greendao { schemaVersion 1 //当前数据库版本 }
greendao配置路径和版本要独立配置,配置位置如下:
二、操作数据库
1.在MyApplication中创建数据库
public class MyApplication extends Application { private static DaoSession daoSession; @Override public void onCreate() { super.onCreate(); //配置数据库 setupDatabase(); } /** * 配置数据库 */ private void setupDatabase() { //创建数据库shop.db" DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "shop.db", null); //获取可写数据库 SQLiteDatabase db = helper.getWritableDatabase(); //获取数据库对象 DaoMaster daoMaster = new DaoMaster(db); //获取Dao对象管理者 daoSession = daoMaster.newSession(); } public static DaoSession getDaoInstant() { return daoSession; } }
配置数据库名如上,创建一个DaoSession用来操作数据库
2.创建Bean对象
操作数据库需要的内容有:数据库名、表名、字段名,Bean中的类名就相当于表明,类中的属性就相当于字段名
下面是创建bean类需要用
- @Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
- @Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值
- @Property:可以自定义字段名,注意外键不能使用该属性
- @NotNull:属性不能为空
- @Transient:使用该注释的属性不会被存入数据库的字段中
- @Unique:该属性值必须在数据库中是唯一值
- @Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改
@Entity public class Student { @Id(autoincrement = true) // 设置自增长id private Long stuId; // @Index(unique = false) // 设置唯一性 private String stuNo; // 学生编号 private String stuName; // 学员姓名 private String stuSex; // 性别 private String stuScore; // 成绩 }如上在类名上加入@Entity注解,在id上加入@Id注解和自增(自增可以不添加)
添加完毕后点击Build中的Make Project让GreenDao自动生成代码,其中自动生成的代码有Bean实体的构造方法,DaoMaster、DaoSession、DAOS类
生成完毕后可以通过
studentDao = MyApplication.getDaoInstant().getStudentDao();获取想要操作的表然后进行增删改查
- 增加单个数据
- getStudentDao().insert(student);
- getStudentDao().insertOrReplace(student);
- 增加多个数据
- getStudentDao().insertInTx(studentList);
- getStudentDao().insertOrReplaceInTx(studentList);
- 查询全部
- List< Student> list = getStudentDao().loadAll();
- List< Student> list = getStudentDao().queryBuilder().list();
- 查询附加单个条件
- .where()
- .whereOr()
- 查询附加多个条件
- .where(, , ,)
- .whereOr(, , ,)
- 查询附加排序
- .orderDesc()
- .orderAsc()
- 查询限制当页个数
- .limit()
- 查询总个数
- .count()
- 修改单个数据
- getStudentDao().update(shop);
- 修改多个数据
- getStudentDao().updateInTx(shopList);
- 删除单个数据
- getStudentDao().delete(student);
- 删除多个数据
- getStudentDao().deleteInTx(studentList);
- 删除数据ByKey
- getStudentDao().deleteByKey();