You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite Dump文件数据类型到Room实体Kotlin类型映射方法问询

SQLite Dump文件到Room实体的类型映射与自动化方案

一、SQLite类型到Room Kotlin类型的对应规则

针对你提到的SQLite类型,结合SQLite的类型亲和性特性(实际存储不严格匹配声明类型,以实际存储值为准),直接对应Room的Kotlin类型如下:

  • date/datetime:优先用Kotlin的LocalDate/LocalDateTime,配合Room的@TypeConverter实现类型转换(SQLite本身无原生日期类型,通常存为文本或数值);也可以直接用String/Long存储,再自行处理格式。
  • mediumtext/TEXT/varchar(255)/varchar(32):统一对应Kotlin的String,Room默认会将其映射为TEXT类型,无需额外注解(若要显式指定类型亲和性,可加@ColumnInfo(typeAffinity = ColumnInfo.TEXT))。
  • tinyint(1)/int(1):如果字段用来存储布尔值(0/1),对应Kotlin的Boolean(Room会自动把0映射为false,非0值映射为true);如果是存储小范围整数,用Int。
  • int(10):对应Kotlin的Int(SQLite的int(10)只是显示宽度限制,实际存储范围和普通整数一致)。
  • bigint(20):对应Kotlin的Long(避免大数值溢出)。

额外注意:表中主键字段需加@PrimaryKey注解;自增主键补充autoGenerate = true;CREATE INDEX语句对应的索引,可在实体类的@Entity注解中用indices = [Index(value = ["字段名"])]声明。

二、自动化生成Room实体的工具/方案

无需手动逐个字段编写,这些工具可快速生成符合规范的代码:

  • Android Studio插件:搜索安装Room Entity Generator插件,直接导入SQLite数据库文件或粘贴CREATE TABLE语句,一键生成带注解的Room实体类、DAO甚至数据库类,支持自定义类型映射规则。
  • 自定义解析脚本:用Python或Shell脚本解析SQLite Dump中的CREATE TABLE语句,提取字段名、类型、约束(主键、非空等),自动生成符合Room规范的Kotlin代码。比如解析CREATE TABLE user (id int(10) primary key, name varchar(255))这类语句,直接输出带@Entity、@PrimaryKey的实体类。
  • Room Schema反向生成:先通过createFromAsset("db.sqlite")成功加载数据库后,在Room配置中开启exportSchema = true,生成的schema.json文件包含完整表结构,再用工具基于schema生成实体类。

内容的提问来源于stack exchange,提问作者gdrt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:30:03