GreenDao:greenrobot开发快速开发数据库相关接口,节省时间
GreenDao特点
性能最大化,可能是Android平台上最快的ORM框架
易于使用的API
最小的内存开销
依赖体积小
支持数据库加密
强大的社区支持
首先在project的build.gradle
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
在model:app
apply plugin: 'org.greenrobot.greendao' // apply plugin
greendao{
schemaVersion 1 //数据库版本号
daoPackage 'com.com.bwie.greendao' // 设置DaoMaster、DaoSession、Dao 包名
targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
}
implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2'
实体类
@Entity
public class Person {
@Id(autoincrement = true)
Long id;
String name;
int age;
}
然后点击make,自动生成如下三个类
然后初始化
public class App extends Application {
private static App mApp;
DaoMaster.DevOpenHelper devOpenHelper;
DaoMaster daoMaster;
DaoSession session;
SQLiteDatabase db;
@Override
public void onCreate() {
super.onCreate();
mApp=this;
//初始化greendao
setDatas();
}
//单例模式
public static App getInstance(){
if (mApp==null){
synchronized (App.class){
if (mApp==null){
return mApp=new App();
}
}
}
return mApp;
}
public void setDatas() {
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper
devOpenHelper = new DaoMaster.DevOpenHelper(this, "user.db", null);
db = devOpenHelper.getWritableDatabase();
daoMaster = new DaoMaster(db);
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
session = daoMaster.newSession();
}
public DaoSession getSession(){
return session;
}
public SQLiteDatabase getdb(){
return db;
}
}
session = App.getInstance().getSession();
dao = session.getPersonDao();
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.adds:
Person person = new Person(null, name.getText().toString(), Integer.valueOf(age.getText().toString()));
dao.insert(person);
Log.e("add",person.toString());
break;
case R.id.delete:
dao.deleteByKey(Long.valueOf(1));
break;
case R.id.select:
//方法一
//List<Person> people = dao.loadAll();
//方法二:
// List<Person> list = dao.queryBuilder().list();
//条件查询
List<Person> list = dao.queryBuilder().where(PersonDao.Properties.Age.eq(32)).list();
Log.e("select",list.toString());
break;
case R.id.update:
List<Person> lists = dao.queryBuilder().list();
Person person1 = lists.get(0);
person1.setAge(43242);
Log.e("update",person1.toString());
break;
}
}