AndroidRoom数据库使用@Relation注解进行多表查询-Kotlin

更新时间:2023-06-04 00:09:43 阅读: 评论:0

AndroidRoom数据库使⽤@Relation注解进⾏多表查询-Kotlin Android Room 数据库使⽤@Relation注解进⾏多表查询-Kotlin
前⾔
在开发中⽤到多表⼀起查询的时候,我以前都是使⽤这个⽅法()最近发现⾕歌原⽣room⾥竟然有个@Relation注解⽤来解决这个问题的,⽤起来还相当⽅便,故在此记录⼀下。
参考链接
代码
假设⼀个需求,你有n个朋友,你有n种礼物,你给每个朋友都送了不⽌⼀种礼物,最后需要得到⼀个列表【朋友 + 得到的礼物】
创建两个数据表
第⼀个是朋友的表含反义词
@Entity(tableName ="friend_table")
data class FriendInfo(
// 唯⼀
@PrimaryKey(autoGenerate =true)
var friendId: Int =0,
var friendName: String =""
): Serializable新款手机排行
第⼀个是礼物的表
@Entity(tableName ="gift_table")
赛盾data class GiftInfo(
// 唯⼀
@PrimaryKey(autoGenerate =true)
var giftId: Int =0,寓言>保险广告
var giftName: String ="",
var giftLable: String =""
): Serializable
创建记录
再创建⼀个表来记录你送给朋友的礼物
@Entity(tableName ="friend_gift_table",
dq加盟电话primaryKeys =["friendId","giftId"],)
data class FriendGiftRelation(
var friendId: Int =0,
var giftId: Int =0,
)
: Serializable江西齐云山
创建读取合并实体类
最后你需要将这种关系⼀起读取出来放到⼀个实体⾥
data class FriendWithGiftList(
@Embedded
var friendInfo: FriendInfo,
@Relation(parentColumn ="friendId",// 这个参数来⾃于FriendInfo的唯⼀Key
entityColumn ="giftId",// 这个参数来⾃于GiftInfo的唯⼀Key
entity = GiftInfo::class,
associateBy =Junction(FriendGiftRelation::class))
var giftList: List<GiftInfo>
陈肯)
: Serializable
创建Dao
这是读取逻辑
@Query("SELECT * FROM friend_table")
fun queryAllFriendWithGiftList(): LiveData<List<FriendWithGiftList>>
最后
当然,@Relation注解不是只能像上⾯例⼦那样使⽤,还有更多详细⽤法,请参考上⾯的 参考链接

本文发布于:2023-06-04 00:09:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/853552.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:读取   创建   朋友   问题
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图