And*_*ndy 6 android kotlin data-class sqldelight kmm
我正在尝试使用 Kotlin Multiplatform 创建一个小型应用程序,在其中我可以保存书名及其作者,但我正在努力解决数据类以及如何将它们映射在一起,以便我获得作者及其所有书籍和发布日期。
CREATE TABLE book(
id INTEGER NOT NULL,
name TEXT NOT NULL,
publishDate INTEGER NOT NULL,
authorId INTEGER NOT NULL
)
CREATE TABLE author(
id INTEGER NOT NULL,
name TEXT NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
这是我的数据类:
@Serializable
data class bookEntity(
id: Int,
name: String,
authorId: Int
)
@Serializable
data class authorEntity(
id: Int,
authorName: String
books: List<bookEntity>
)
Run Code Online (Sandbox Code Playgroud)
和我的查询:
selectAuthors:
SELECT * FROM author
JOIN book ON book.authorId = author.id
WHERE book.authorId = author.id
Run Code Online (Sandbox Code Playgroud)
我尝试了以下映射,但它不起作用:
private fun mapAuthor(
id: Int,
authorName: String,
bookId: String,
name: String,
publishDate: Long
): Author(
return Author (
id = id,
authorName = authorName,
book = List<BookEntity>(
id = bookId,
name = name,
publishDate = publishDate
)
)
)
Run Code Online (Sandbox Code Playgroud)
我如何处理这样的列表?感谢您的每一次帮助!
theON子句JOIN是链接两个表的条件。您无需重复WHERE子句中的条件。用于WHERE进一步缩小查询范围,例如,如果您正在搜索特定的作者姓名。
SELECT * FROM author
JOIN book ON book.authorId = author.id
WHERE author.name LIKE 'John%';
Run Code Online (Sandbox Code Playgroud)
如果要查询所有作者,只需将其WHERE完全删除即可。
此外,您不需要自己创建数据类并进行映射。SQLDelight 已经为您的查询创建了数据类。
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |