[英]How to insert a List of objects from an API to Room using Kotlin?
[英]How to save a list of objects in Room using Kotlin?
I need to save some data from my API in my Room database, so i've just created my model as the API response in my android project but when i try to run it the app require to set the Entity even to my object which is仅设置为给出 object 的定义,它将保存在我的数据库中...
那么,在我的 Room 数据库中的 object 中,哪种方法是保存对象数组的正确方法?
这是我的模型的样子:
@Entity(tableName = "articoli_server_table")
data class ArticoliServer(
@PrimaryKey(autoGenerate = false)
var codart: String,
var desc: String,
var prezzo_acq: Float,
var prezzo_vend: Float,
var barcode: List<barcode>,
var qta: Float
)
data class barcode(
var barcode: String,
var qta: Float
)
您可以采用几种方法将条形码数据列表保存在数据库中:
1. 您可以将自定义TypeConverter
用于您的条形码对象列表,例如,您可以将对象列表保存为以下形式的单个字符串(逗号分隔值): "barcode1,qta1,barcode2,qta2,.."
,实现可能是这样的:
@Entity(tableName = "articoli_server_table")
@TypeConverters(BarcodeListConverter::class)
data class ArticoliServer(
@PrimaryKey(autoGenerate = false)
var codart: String,
var desc: String,
var prezzo_acq: Float,
var prezzo_vend: Float,
var barcode: List<barcode>?,
var qta: Float
)
data class barcode(
var barcode: String,
var qta: Float
)
object BarcodeListConverter {
@TypeConverter
fun toString(barcodeList: List<barcode>?): String? {
if (barcodeList == null) return null
val stringList = mutableListOf<String>()
barcodeList.forEach {
stringList.add(it.barcode)
stringList.add(it.qta.toString())
}
return stringList.joinToString(",")
}
@TypeConverter
fun toBarcodeList(str: String?): List<barcode>? {
if (str == null) return null
val barcodeList = mutableListOf<barcode>()
val strList = str.split(",")
for (i in strList.indices step 2) {
barcodeList.add(barcode(strList[i], strList[i + 1].toFloat()))
}
return barcodeList
}
}
2. 您可以在您的数据库中为您的条形码实体创建一个新实体(DB 表) ,并在您的ArticoliServer
和barcode
实体之间创建一对多的关系。 您可以查看此页面以获取有关定义与Room持久性库的关系的更多信息。
PS我建议您实施第二种方法,以防您有许多条形码对象要保存在数据库中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.