【发布时间】:2020-05-17 16:44:20
【问题描述】:
我正在 Kotlin 中使用 Spring Boot 构建一个简单的 ToDo 应用程序。我都是新手。以下是数据类,我用来通过 JPA 将数据持久化到 MySQL 数据库中。
@Entity @Table
data class Task(
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column val id: Long,
@Column var title: String,
@Column var isCompleted: Boolean
)
这是 JPA 存储库。
@Repository interface TaskRepository: JpaRepository<Task, Long>
用户可以有一个任务列表。
我有两个要求,首先是当用户添加一个新任务时,它必须添加到列表的末尾,这意味着当我从数据库中检索时,我需要按照保存的顺序来保存列表。我想通过添加如下所示的位置属性来实现这一点,该属性会自动递增。建议是否有更好的选择。创建的基于时间的排序不符合我的其他要求。
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column var position: Int
第二个要求是用户可以重新安排任务。例如,用户可以将第 8 个位置的任务移动到第 2 个位置。为此,我正在考虑将每个任务的位置从 2 增加到 7,然后将所选任务的位置更改为 2。
我不知道如何通过单个查询来实现这一点。这甚至可能吗?这是正确的做法吗?
此外,如果用户删除了一项任务,理想情况下,我希望将所有任务的位置减一。但如果它很昂贵,我可以不用它。
我真的很喜欢 Spring Boot 对配置设计的约定,所以我希望一定有一种更简单、更好的方法来满足我的要求。
【问题讨论】:
-
第二部分可以使用case语句。你不是第一个想要这样做的人。
-
@Strawberry 我清楚地知道我不是第一个想要这样做的人。这就是为什么我要问是否有经过验证的更好方法?
-
有关于如何改变任务位置的消息吗?
标签: mysql spring-boot kotlin spring-data-jpa