Kotlin Multiplatform中如何用benasher44/uuid库生成UUID赋值给实体类ID
使用benasher44/uuid库为Children数据类生成UUID
首先要明确:UUID是128位标识符,无法直接映射为Long类型(仅64位),会丢失数据。建议将id的类型改为库提供的Uuid类型或字符串类型,以下是具体实现步骤:
1. 添加依赖
在项目构建脚本中引入uuid库及序列化支持(适配@Serializable注解):
// build.gradle.kts(Kotlin DSL) dependencies { implementation("com.benasher44:uuid:0.8.0") // 跨平台UUID核心库 implementation("com.benasher44:uuid-serialization:0.8.0") // 支持kotlinx.serialization序列化Uuid类型 }
2. 修改Children数据类
将id的类型改为Uuid,并使用Uuid.randomUUID()作为默认值自动生成UUID:
import com.benasher44.uuid.Uuid import kotlinx.serialization.Serializable @Serializable data class Children( // val parentId: Long, val id: Uuid = Uuid.randomUUID(), val gender: String, val firstName: String, val lastName: String, val birthDate: String, val grade: String, var avatar: String?, )
如果业务需要将UUID存储为字符串(适配现有存储结构),可改为:
@Serializable data class Children( // val parentId: Long, val id: String = Uuid.randomUUID().toString(), val gender: String, val firstName: String, val lastName: String, val birthDate: String, val grade: String, var avatar: String?, )
3. 说明
该库已实现跨平台UUID生成逻辑,无需自行编写expect/actual的平台特定代码,直接调用Uuid.randomUUID()即可生成标准UUID,完全满足简化代码的需求。
内容的提问来源于stack exchange,提问作者user21508891
相关产品推荐
相关产品推荐

