KPojo属性动态存取器

本章介绍Kronos在编译期为KPojo生成的属性动态存取器,支持在运行时动态地根据属性名来访问或修改属性值,且不依赖反射,性能更高,推荐使用。

KPojo 的Get 属性访问器

在Kronos中,我们可以使用KPojo的get属性访问器来访问数据表的字段。

kotlin

data class User(
    val id: Int? = null,
    val name: String? = null,
    val age: Int? = null
) : KPojo

val user = User(
    id = 1,
    name = "Kronos",
    age = 18
)

val valueOfId = user["id"] // 1
val valueOfName = user["name"] // "Kronos"
val valueOfAge = user["age"] // 18

result

id -> 1
name -> Kronos
age -> 18
不存在的字段 -> null

KPojo 的Set 属性访问器

在Kronos中,我们可以使用KPojo的set属性访问器来修改数据表的字段。

kotlin

data class User(
    val id: Int? = null,
    val name: String? = null,
    val age: Int? = null
) : KPojo

val user = User(
    id = 1,
    name = "Kronos",
    age = 18
)

user["id"] = 2 // 不可变的值也是可以通过该访问器修改的
user["name"] = "Kronos" // 不可变的值也是可以通过该访问器修改的
user["age"] = 20 // 不可变的值也是可以通过该访问器修改的

result

user.id == 2
user.name == "Kronos"
user.age == 20

泛型代码在运行时拿到字段名时,可以使用这些访问器。使用同一 KPojo 字段元数据的 Map 转换 API 见 📚Map/KPojo 类型转换。