当前位置:   article > 正文

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

安卓数据库orm

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'
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

如何使用(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")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

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

有图有真相

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/480471
推荐阅读
相关标签
  

闽ICP备14008679号