relation

更新时间:2022-11-23 20:32:27 阅读: 评论:0


2022年11月23日发(作者:网上1对1辅导)

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

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

前⾔

在开发中⽤到多表⼀起查询的时候,我以前都是使⽤这个⽅法()最近发现⾕歌原⽣room⾥竟然有个@Relation注解⽤来解决这个问题

的,⽤起来还相当⽅便,故在此记录⼀下。

参考链接

代码

假设⼀个需求,你有n个朋友,你有n种礼物,你给每个朋友都送了不⽌⼀种礼物,最后需要得到⼀个列表【朋友+得到的礼物】

创建两个数据表

第⼀个是朋友的表

@Entity(tableName="friend_table")

dataclassFriendInfo(

//唯⼀

@PrimaryKey(autoGenerate=true)

varfriendId:Int=0,

varfriendName:String=""

):Serializable

第⼀个是礼物的表

@Entity(tableName="gift_table")

dataclassGiftInfo(

//唯⼀

@PrimaryKey(autoGenerate=true)

vargiftId:Int=0,

vargiftName:String="",

vargiftLable:String=""

):Serializable

创建记录

再创建⼀个表来记录你送给朋友的礼物

@Entity(tableName="friend_gift_table",

primaryKeys=["friendId","giftId"],)

dataclassFriendGiftRelation(

varfriendId:Int=0,

vargiftId:Int=0,

):Serializable

创建读取合并实体类

最后你需要将这种关系⼀起读取出来放到⼀个实体⾥

dataclassFriendWithGiftList(

@Embedded

varfriendInfo:FriendInfo,

@Relation(parentColumn="friendId",//这个参数来⾃于FriendInfo的唯⼀Key

entityColumn="giftId",//这个参数来⾃于GiftInfo的唯⼀Key

entity=GiftInfo::class,

associateBy=Junction(FriendGiftRelation::class))

vargiftList:List

):Serializable

创建Dao

这是读取逻辑

@Query("SELECT*FROMfriend_table")

funqueryAllFriendWithGiftList():LiveData>

最后

当然,@Relation注解不是只能像上⾯例⼦那样使⽤,还有更多详细⽤法,请参考上⾯的参考链接

本文发布于:2022-11-23 20:32:27,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/7959.html

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

下一篇:advocate
标签:relation
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图