测试页面
这是一个带有图片的区块(取自 Compose Multiplatform 入门教程)。
使用 Kotlin 创建 Spring Boot 项目
向 Spring Boot 项目添加数据类
为 Spring Boot 项目添加数据库支持
使用 Spring Data CrudRepository 进行数据库访问>
同步标签页
plugins {
kotlin("kapt") version "1.9.23"
}plugins {
id "org.jetbrains.kotlin.kapt" version "1.9.23"
}plugins {
kotlin("plugin.noarg") version "1.9.23"
}plugins {
id "org.jetbrains.kotlin.plugin.noarg" version "1.9.23"
}章节
折叠章节
这里有一些文本和一个代码块:
plugins {
kotlin("plugin.noarg") version "1.9.23"
}代码块
只是一个代码块:
import java.util.*
@Service
class MessageService(val db: MessageRepository) {
fun findMessages(): List<Message> = db.findAll().toList()
fun findMessageById(id: String): List<Message> = db.findById(id).toList()
fun save(message: Message) {
db.save(message)
}
fun <T : Any> Optional<out T>.toList(): List<T> =
if (isPresent) listOf(get()) else emptyList()
}可展开的代码块
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
@RestController
class MessageController {
@GetMapping("/")
fun index(@RequestParam("name") name: String) = "Hello, $name!"
}可运行的代码块
data class User(val name: String, val id: Int)
fun main() {
val user = User("Alex", 1)
// 自动使用 toString() 函数,以便输出易于阅读
println(user)
// User(name=Alex, id=1)
}表格
Markdown 表格
| 原生类型数组 | Java 中的对应类型 |
|---|---|
BooleanArray | boolean[] |
ByteArray | byte[] |
CharArray | char[] |
DoubleArray | double[] |
FloatArray | float[] |
IntArray | int[] |
LongArray | long[] |
ShortArray | short[] |
XML 表格
| 最后修改于 | 2023 年 12 月 |
| 下次更新 | 2024 年 6 月 |
内含代码块的 XML 表格
简单表格:
| 之前 | 现在 |
kotlin | kotlin |
更复杂的表格:
| 之前 | 现在 | |
jvmMain 编译的依赖项 | kotlin | kotlin |
kotlin | kotlin | |
jvmMain 源集的依赖项 | kotlin | |
jvmTest 编译的依赖项 | kotlin | kotlin |
jvmTest 源集的依赖项 | kotlin | |
列表
有序列表
一
二
三
- 三点 1
- 三点 2
- 三点 3
- 三点 1 和 1
内含代码块:
kotlinjvmTest<Scope>
无序列表
第一项
第二项
第三项
- 再来一项
- 又一项
- 哇,再来一项
内含代码块:
kotlinjvmTest<Scope>
定义列表
可折叠项 #1
CrudRepository 接口中 findById() 函数的返回值类型是 Optional 类的一个实例。然而,为了保持一致性,返回包含单条消息的 List 会更方便。为此,你需要解构 Optional 值(如果存在),并返回一个包含该值的列表。这可以作为 Optional 类型的扩展方法来实现。
在代码中,Optional<out T>.toList(),.toList() 是 Optional 的扩展方法。扩展方法允许您为任何类编写额外的函数,当您想要扩展某些库类的功能时,这特别有用。
可折叠项 #2
此函数的工作前提是数据库中尚不存在该新对象。因此,插入时的 id 应为 null。
如果 id 不为 null,CrudRepository 会假定该对象已存在于数据库中,并且这是一次更新 (update) 操作,而非插入 (insert) 操作。在插入操作之后,id 将由数据存储生成并分配回 Message 实例。这就是为什么 id 属性应该使用 var 关键字声明的原因。
文本元素
变量
- 变量使用:最新的 Kotlin 版本是 2.4.10
嵌入元素
来自 YouTube 的视频
图片
常规 (Markdown):

常规 (XML):

内联:
![]()
可缩放:
按钮样式:

备注
警告:
kapt 编译器插件对 K2 的支持目前处于实验性功能阶段。 需要选择性启用 (opt-in)(详见下文),且仅应将其用于评估目的。
注意:
至于随 Kotlin/Native 提供的原生平台库(如 Foundation、UIKit 和 POSIX),只有部分 API 需要通过
@ExperimentalForeignApi进行选择性启用。在这些情况下,您会收到带有选择性启用要求的警告。
提示:
至于随 Kotlin/Native 提供的原生平台库(如 Foundation、UIKit 和 POSIX),只有部分 API 需要通过
@ExperimentalForeignApi进行选择性启用。在这些情况下,您会收到带有选择性启用要求的警告。
