GreenDao是一个优质的开源数据库,每秒支持上千次的增删改查,效率非常高,对比同类开源数据库,稳稳排在第一位,更多详细介绍:https://github.com/greenrobot/greenDAO.
依赖:
compile 'org.greenrobot:greendao:3.2.0'
依赖成功之后需要对数据库进行配置,在3.0之前,需要手动写类来进行配置,到了3.0之后,可以直接在build.gradle文件中配置.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
}
apply plugin: 'org.greenrobot.greendao'
//配置数据库,配置版本号即可,其他的只需要保持默认
greendao {
//数据库版本号
schemaVersion 1
//数据库所在包
// daoPackage 'com.xxxxx_yk.greendaodemo.dao'
//生成的数据库文件的目录
// targetGenDir 'src/main/java'
//自动生成单元测试
// generateTests true
//生成的单元测试目录
// targetGenDirTests
}
全部配置成功之后,建立数据库实体模型
@Entity
public class Student {
@Id(autoincrement = true)
private Long _id;
@Unique
@NotNull
@Property(nameInDb = "username")
private String name;
@NotNull
private String age;
@Transient
private String info;
}
注解解析:
@Entity 标记该类为数据库实体模型,指示GreendDao生成代码
@Id(autoincrement = true) 配置id自动增长
@Unique 字段约束,保证值唯一
@NotNull 字段不允许为空
@Property(nameInDb = "username") 设置该列名非默认,采用自定义
@Transient 设置该键在数据库中排除
完成创建之后,点击Sync Progect,GeenDao将会自动生成代码,特别注意,不要轻易动自动生成的代码.
DaoMaster:该类保存了数据库对象(SQLiteDatabase).它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现.
DaoSession:提供对数据库进行增删改查的方法.
StudentDao:GreenDao对于每个实体生成的类,即配置@Entity之后的类.
初始化核心对象:
public class GreenDaoHelper {
private static DaoMaster.DevOpenHelper mHelper;
private static SQLiteDatabase mDb;
private static DaoMaster mDaoMaster;
private static DaoSession mDaoSession;
/**
* 设置greenDao
*/
public static void initDatabase() {
mHelper = new DaoMaster.DevOpenHelper(MyApp.mContext, "student_db", null);
mDb = mHelper.getWritableDatabase();
mDaoMaster = new DaoMaster(mDb);
mDaoSession = mDaoMaster.newSession();
}
public static DaoSession getDaoSession() {
return mDaoSession;
}
public static SQLiteDatabase getDb() {
return mDb;
}
}
在Appliction中应用
public class MyApp extends Application {
public static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
GreenDaoHelper.initDatabase();
}
}
至此,GreedDao配置完成,接下来就可以进行增删改查了.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取数据库对象
mStudentDao = GreenDaoHelper.getDaoSession().getStudentDao();
//插入一条数据,传null id会自增
mStudentDao.insert(new Student(null,"张三","23"));
//删除一条数据
mStudentDao.delete(new Student(null,"张三","23"));
//根据主键删除一条数据
mStudentDao.deleteByKey(1L);
//删除全部数据
mStudentDao.deleteAll();
//修改一条数据
mStudentDao.update(new Student(null,"张三","25"));
//查询全部数据
mStudentDao.loadAll();
//查询一条数据,where中填写条件
mStudentDao.queryBuilder().where(StudentDao.Properties.Name.eq("张三")).unique();
}
至此,GreenDao应用完毕.