跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • JPA 关于 list-item 展示顺序问题
未分類
25 4 月 2020

JPA 关于 list-item 展示顺序问题

JPA 关于 list-item 展示顺序问题

資深大佬 : StyxS 18

比如一个文章列表,支持移动某个文章在文章列表里面的顺序
我的想法是给文章加一个 order 字段,让他插入时自增,检索时按照 order 降序排列
移动顺序时,就去找目标位置去更改这个 order 字段
感觉这样问题会比较多 IDENTITTY @generatedValue 后续更改是否会出问题呢?
像这种场景,最好的设计应该是怎样的
大佬有話說 (17)

  • 資深大佬 : wysnylc

    加字段没问题

  • 主 資深大佬 : StyxS

    @wysnylc 移动顺序的话相当于要重新改多条记录的 order,有更好的方法嘛

  • 資深大佬 : jjianwen68

    单加一个字段表示排序,不太够吧,置顶,按标签筛选后的排序呢

  • 主 資深大佬 : StyxS

    @jjianwen68 置顶是独立于排序的这个顺序的,单独弄了个置顶表
    如果按标签筛选排序,用 order 没什么毛病:按标签筛了以后再按 order 排
    这样一想的话,好像限制只能上移下移顺序,就不用处理 order 更改麻烦的问题

  • 資深大佬 : KentY

    @StyxS 你如果需要顺序这个信息 persist 在数据库里, 当你修改了这个(比如移动了), 肯定这个文章 entry 会被 update.没问题.

    你用 `IDENTITTY @generatedValue` 肯定不行, 因为你要的 order 不是 identity

    你说道:”移动顺序时,就去找目标位置去更改这个 order 字段”
    如果你用自动增量+1 这种方式, 你考虑过没有, 比如:你的 order column:
    1,2,3,4,5 现在你移动 5 到 1 和 2 之间, 你需要 update 多少条记录才变成新的 1,2(原来的 5),3(原来的 2),4(原来的 3),5(原来的 4)

  • 主 資深大佬 : StyxS

    @KentY 是的,所以我想请教一下正确的这种“展示顺序”应该用什么样的方式来实现

  • 資深大佬 : KentY

    @StyxS 可以设置两个字段, 一个你说的 order, 另一个也是数字, 默认一个相同的就可以,处理当 order 值一样的情况下, 仅对相同 order 的记录进行重排.
    这样有效限制了 update 的记录数. 如果主表特别大, 根据你用的数据库不同, 可以考虑是不是单独出来一个表会在性能以及 lock 上有帮助. 类似:
    order| sub-order
    1,0
    2,0
    3,0
    3,1
    3,2

  • 主 資深大佬 : StyxS

    @KentY 感谢

  • 資深大佬 : snowydec

    @OrderColumn 注解?

  • 主 資深大佬 : StyxS

    @snowydec 看了下,ordercolumn 好像是应用在成员列表上来维持排序的,但是这个地方文章表好像并不能用上这个吧?

  • 資深大佬 : ConradG

    order 字段用浮点类型,变更顺序只用前一条和后一条的 order 取平均

  • 資深大佬 : KentY

    @ConradG 这个要看他什么要求, 当一定情况下, 总会超过定义的精度要求

  • 資深大佬 : Allianzcortex

    如果是类似 trello 这样可以上下拖动改变 ticket 的优先级功能,它的实现是每个 ticket 维护一个 after_id 字段,拖动后会 put 一个请求更新字段,然后前端显示时会根据整个 id 排序后再展示

  • 資深大佬 : lybcyd

    用链表的思路做可以吗?这样的话移动顺序只需要更改关联字段就可以了

  • 主 資深大佬 : StyxS

    @ConradG 这个思路很牛逼,学习了

  • 主 資深大佬 : StyxS

    @Allianzcortex 意思是前端来排序?那分页的话应该怎么办呢

  • 主 資深大佬 : StyxS

    @lybcyd 链表的话,持久化不太方便吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具