一个简单的安卓数据库orm: orz

sqliteorz

a simple sqlite orm which names orz

这是一个简单的sqlite orm
如果你希望可以使用少量的代码操作安卓sqlite
并且是作为学习或者小项目开发(不建议上生产,郭神的LitePal还是有保障的)
那么它很适合你
你只需要将你的数据库model继承DBBaseModel,初始化数据库
就可以不再对每个字段从cursor赋值了
一起来看看吧

如何引入

// corp from [jitpack](https://jitpack.io)
// step 1. Add the JitPack repository to your repositories
repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

// Step 2. Add the dependency
dependencies {
    implementation 'com.github.lawnvi:sqliteorz:1.0.0'
}

如何使用(CRUD)

/**
 * @DemoModel 让你的数据库的模型继承DBBaseModel
 * 请注意,至少需要一个空的构造函数,用于反射获取表信息
 */
data class DemoModel(
    var name: String = "",
    var age: Int = 18,
    var gender: Boolean = true,
    var content: String = "",
): DBBaseModel() {
    // 自定义表名
    override fun getTableName(): String {
        return super.getTableName()
    }
}

/**
 * 配置数据库名称,位置,表
 * 在可以获取到context的地方初始化数据库
 * 比如MainActivity的onCreate()
 */

/**
 * 三个参数均有默认值
 * name=package name
 * dirPath=/sdcard/Android/package/files/database
 * version=1, 需要注意的是,当增加或者变更model字段后需要改变version,此时会重新创建数据库,数据丢失
 * 郭神的LitePal好像是可以保留数据更新的
 */
val driver = DBDriver(name = "db", version = 1, dirPath = "/sdcard")
// 注册模型到数据库
driver.registerModel(DemoModel::class.java)
// 初始化数据库,为啥是array,因为支持多个数据库,厉害吧
OrzHelper.initialize(this.applicationContext, drivers = arrayOf(driver))

/**
 * 以下是增改查删的操作
 * 只有以下操作
 */

// insert
val obj = DemoModel("张三", age = (System.currentTimeMillis()%100).toInt())
obj.save()

// update, 存在id时 where: "id = $id",set: map
obj.update(mapOf("name" to "李四"))
// 或者new一个对像来update
DemoModel("").update(mapOf("name" to "李四"), "id > 1")
// 或者使用DBOrz
DBOrz.update<DemoModel>(mapOf("name" to "李四"), "id > 1")

// select
val objList = DBOrz.findModels<DemoModel>("id > 0")

// delete
obj.delete()

// count
val count = DBOrz.count<DemoModel>("id > 0")

插个源码路标 demo里有一个简单但完整的例子

有图有真相

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值