一、关于greenDAO
greenDAO是一个开源的Android ORM,它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。
ORM图
二、greenDAO优点
- 最佳性能 (可能是 Android 中最快的 ORM) ,基准测试也是开源的;
- 易于使用的功能强大的 api,涵盖关系和连接;
- 最小的内存消耗;
- 小型库大小(< 100KB) ,以保持较低的构建时间,并避免65k 方法限制;
- 数据库加密:greenDAO 支持 SQLCipher 来保证用户数据的安全;
- 强大而活跃的社区交流支持,相关资料比较完善;
- 许多顶级的Android应用程序都依赖greenDAO,其中一些应用程序的安装量超过1000万,更证明了其可靠性。
三、 引入greenDAO
首先在项目目录下的build.gradle中配置
-
repositories {
-
// GreenDao仓库
-
mavenCentral()
-
}
-
dependencies {
-
// GreenDao插件
-
classpath
'org.greenrobot:greendao-gradle-plugin:3.2.2'
-
}
然后在app目录下的build.gradle中配置
-
//GreenDao插件
-
apply plugin:
'org.greenrobot.greendao'
-
dependencies {
-
implementation
'org.greenrobot:greendao:3.2.2'
-
}
-
android {
-
greendao {
-
-
schemaVersion
1
//数据库版本号 每次升级数据库都需要改变版本,只能增加
-
-
daoPackage
'com...green'
//设置DaoMaster、 DaoSession、Dao包名
-
-
targetGenDir
'src/main/java'
//设置DaoMaster、DaoSession、Dao目录
-
}
-
}
四、创建数据库及增删改查操作
先创建一个实体类
-
@Entity
-
public
class UserIm {
-
@Id
-
private Long id;
-
private String userId;
-
private String name;
-
private String url;
-
}
其中Long id对应数据表中的主键,是一条数据的唯一标识。
创建完之后,点击Make Project图标
会自动生成get、set方法,同时在上述填写的目录中生成Dao文件
在Application中初始化
-
private DaoMaster daoMaster;
-
private
static DaoSession daoSession;
-
private DaoMaster.DevOpenHelper devOpenHelper=
null;
-
-
devOpenHelper=
new DaoMaster.DevOpenHelper(getApplicationContext(),
"数据库名称.db",
null);
-
//实例化DaoMaster对象
-
daoMaster=
new DaoMaster(devOpenHelper.getWritableDb());
-
//实例化DaoSession对象
-
daoSession=daoMaster.newSession();
-
-
//通过此方法,进行增删改查
-
public static DaoSession getDaoSession(){
-
return daoSession;
-
}
插入数据
-
UserImDao userDao = ServerObserver.getDaoSession().getUserImDao();
-
userDao.insert(
new UserIm(
null,userId, name, url));
删除数据
-
//清空所有数据
-
DaoSession daoSession = ServerObserver.getDaoSession();
-
Database database = daoSession.getUserImDao().getDatabase();
-
DaoMaster.dropAllTables(database,
true);
-
DaoMaster.createAllTables(database,
true);
-
//删除某一条数据
-
userDao.deleteByKey(id);
修改数据
-
-
List<UserIm> userIms;
//所有的user
-
userIms = userDao.queryBuilder().
where(UserImDao.Properties.UserId.eq(userId)).list();
-
if (userIms.size()>
0){
-
//改
-
userIms.
get(
0).setName(title);
-
userIms.
get(
0).setUrl(url);
-
userDao.update(userIms.
get(
0));
-
}
查看数据
-
List<UserIm> userIms;
//所有的user
-
userIms = userDao.queryBuilder().where(UserImDao.Properties.UserId.eq(targetId)).list();
转载:https://blog.csdn.net/baidu_40202612/article/details/114678698
查看评论