greenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不在需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化,最小的内存开销 、依赖体积小同时还是支持数据库加密。
使用步骤:
1.添加依赖(App: build.gradle)
apply plugin: 'org.greenrobot.greendao'
implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2'
2.配置classpath(Project: build.gradle)
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
3.自定义路径(App: build.gradle)
greendao {
schemaVersion 1
daoPackage 'com.example.along.myapplication.db'
targetGenDir 'src/main/java'
}
属性介绍:
schemaVersion--> 指定数据库schema版本号,迁移等操作会用到;
daoPackage --> dao的包名,生成dao相关文件的包名;
targetGenDir --> 生成数据库文件的目录;
同步工程,便可使用
快速使用:
1.定义一个实体类
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;
@Entity
public class User {
@Id
private long id;
private String name;
private int age;
2.点击 Make Project(或者 Make Moudle 'App') 编译一下工程 。如果配置正确,会在配置的包目录下自动会生成 DaoMaster,DaoSession 和 UserDao 类 。
image.png
3.初始化GreenDao,初始化代码可以写在Application类或者新建一个管理类
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
//静态单例
public static MyApp instances;
@Override
public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
public static MyApp getInstances() {
return instances;
}
/**
* 设置greenDao
*/
private void setDatabase() {
mHelper = new DaoMaster.DevOpenHelper(this, "sport-db", null);
db = mHelper.getWritableDatabase();
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
4.获取UserDao对象
mUserDao = MyApp.getInstances().getDaoSession().getUserDao();
5.保存记录
mUser = new User(1,"tony",2);
mUserDao.insert(mUser);//添加一条记录
6.查询记录
List<User> users = mUserDao.loadAll();
String userName = "";
for (int i = 0; i < users.size(); i++) {
userName += users.get(i).getName()+",";
}
dbText.setText(userName);
网友评论