一个方便实用的OrmLite数据库框架,支持一键集成。
公众号 | 掘金 | 知乎 | CSDN | 简书 | 思否 | 哔哩哔哩 | 今日头条 |
---|---|---|---|---|---|---|---|
我的Android开源之旅 | 点我 | 点我 | 点我 | 点我 | 点我 | 点我 | 点我 |
支持通过@DataBase
进行数据库配置。
支持自动生成数据库管理仓库DataBaseRepository
。
支持自动搜索所有的数据库表类,并自动创建数据库表。
支持内部存储和外部存储两种数据库。
支持自定义数据库存储位置。
支持自定义数据库打开、升级以及降级的接口。
支持事务操作、回滚等。
提供了常用的数据库操作API。
目前支持主流开发工具AndroidStudio的使用,直接配置build.gradle,增加依赖即可.
1.先在项目根目录的 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.然后在dependencies添加:
dependencies {
...
implementation 'com.github.xuexiangjys.XOrmlite:xormlite-runtime:1.0.2'
annotationProcessor 'com.github.xuexiangjys.XOrmlite:xormlite-compiler:1.0.2'
}
1.使用@DataBase
进行数据库注册配置。属性如下:
DataBaseType.INTERNAL
【注意】@DataBase
必须注册在Application
类上才起作用。
@DataBase(name = "external", type = DataBaseType.EXTERNAL, path = "/storage/emulated/0/xormlite/databases")
public class ExternalApp extends Application {
@Override
public void onCreate() {
super.onCreate();
}
}
2.使用@DataBase
注册完后,请编译一下项目:build -> Rebuild Project,之后会自动生成数据库管理仓库: 数据库名 + DataBaseRepository 的Java文件。文件的生成路径如下:
例如上面我们注册的数据库名为:external,自动生成的数据库管理仓库为 ExternalDataBaseRepository。
3.初始化数据库管理仓库,设置数据库实现接口。
内部存储的数据库需要需要实现IDatabase
接口。
外部存储的数据库需要需要实现IExternalDataBase
接口。
@DataBase(name = "internal", type = DataBaseType.INTERNAL)
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
InternalDataBaseRepository.getInstance()
.setIDatabase(new InternalDataBase()) //设置内部存储的数据库实现接口
.init(this);
ExternalDataBaseRepository.getInstance()
.setIDatabase(new ExternalDataBase( //设置外部存储的数据库实现接口
ExternalDataBaseRepository.DATABASE_PATH,
ExternalDataBaseRepository.DATABASE_NAME,
ExternalDataBaseRepository.DATABASE_VERSION))
.init(this);
}
}
数据库管理仓库DataBaseRepository提供了获取数据库操作服务的API getDataBase
, 传入标有@DatabaseTable
的数据库实体类Class, 获取对应的数据库操作服务DBService
。
DBService<Student> mDBService = InternalDataBaseRepository.getInstance().getDataBase(Student.class);
DBService
提供了丰富的数据库操作API,详细API请点击参见。
以下简要介绍一部分API:
1.插入单条数据
Student student = new Student();
student.setUserName("xuexiang");
student.setSex("男");
student.setAge((int) (Math.random() * 100));
try {
mDBService.insert(student);
} catch (SQLException e) {
e.printStackTrace();
}
2.更新数据库某一字段
try {
mDBService.updateDataByColumn("username", "xxxx", "username", "xuexiang");
} catch (SQLException e1) {
e1.printStackTrace();
}
3.执行事务插入
try {
mDBService.doInTransaction(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
for (int i = 0; i < mTempList.size(); i++) {
mDBService.insert(mTempList.get(i));
}
return true;
}
});
} catch (SQLException e) {
e.printStackTrace();
ToastUtils.toast("事务执行失败!");
}
4.执行事务删除
try {
mDBService.doInTransaction(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
for (int i = 0; i < mTempList.size(); i++) {
mDBService.deleteData(mTempList.get(i));
}
return true;
}
});
mStudentAdapter.updateList(mDBService.queryAll());
} catch (SQLException e) {
e.printStackTrace();
ToastUtils.toast("事务执行失败!");
}
-keepattributes *DatabaseField*
-keepattributes *DatabaseTable*
-keepattributes *SerializedName*
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
你的打赏是我维护的动力,我将会列出所有打赏人员的清单在下方作为凭证,打赏前请留下打赏项目的备注!
更多资讯内容,欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。