听说你要搞Android本地数据库?别慌!Room这货就是官方给的救命稻草,不用再被原生SQLite虐到脱发了。今天咱们用简单的方式,掰开揉碎了讲讲这玩意儿怎么玩,保你半小时上手!
三大金刚(核心组件)
数据身份证(Entity)
这玩意儿就是数据库里的表格模板,用注解就能搞事情。举个栗子:
小贴士:@Index可以给常用字段加速,但别乱加,跟吃蛋白粉一样适量才好
专属服务员(DAO)
定义怎么调戏数据库,增删改查都能整:
数据城堡(Database)
管着整个数据库的家当:
实例教学
第一步:加装备胎
在module的build.gradle里塞这些:
第二步:搞点事情
在ViewModel里调戏数据库:
坑爹预警(必看保命)
主线程禁忌
别在主线程搞数据库!Room会直接给你甩脸崩溃。用协程、RxJava或者LiveData保平安。调试时可以开allowMainThreadQueries(),但上线前一定记得删!
版本升级翻车现场
改表结构时记得升级version,建议用Migration类处理。实在懒可以用:
但会删数据!(别问我怎么知道的)
索引的玄学
高频查询字段加索引,但每个索引会让写入速度下降。主键自带索引,不用重复加。
类型转换骚操作
想存Date类型?用TypeConverter变身:
版本进化史
版本 | 系统 | 黑科技 |
2.2.x | 4.1+ | 协程支持、预装数据库 |
2.5.x | 4.1+ | 自动迁移、Upsert操作 |
2.6.x | 4.1+ | 性能起飞、全文搜索 |
高阶玩法(装逼必备)
联合作战(Room+Hilt)
骚操作合集
- @Transaction保证多个操作原子性
- @RawQuery直接写原生SQL(慎用!)
- @Relation处理一对多关系
- @Fts4搞全文搜索(2.6+专属)
总结
Room这玩意儿就像乐高积木
- 🧱 Entity是基础积木块
- 🔧 DAO是组装说明书
- 🏗️ Database就是乐高城堡
记住:官方给的轮子使劲用就完事了,别总想着自己造轮子!遇到问题多查官方文档,保你头发茂密~
最后送大家一张Room护身符: