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
相关产品推荐
相关产品推荐

