From f2689ab8124a241493fd461622c80b392bb577c2 Mon Sep 17 00:00:00 2001 From: Timi Date: Wed, 29 Oct 2025 11:22:57 +0800 Subject: [PATCH] auto sort for BaseMapper.listOrder when entity creatable or updatable --- src/main/java/com/imyeyu/spring/util/SQLProvider.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/imyeyu/spring/util/SQLProvider.java b/src/main/java/com/imyeyu/spring/util/SQLProvider.java index 618b31c..4491f81 100644 --- a/src/main/java/com/imyeyu/spring/util/SQLProvider.java +++ b/src/main/java/com/imyeyu/spring/util/SQLProvider.java @@ -64,6 +64,13 @@ public class SQLProvider { sql.append(", "); } sql.deleteCharAt(sql.length() - 2); + } else { + if (meta.canCreate && !meta.canUpdate) { + sql.append("created_at DESC"); + } + if (meta.canCreate && meta.canUpdate) { + sql.append("COALESCE(updated_at, created_at) DESC"); + } } return sql.append(" LIMIT %s, %s".formatted(offset, limit)).toString(); } @@ -258,6 +265,9 @@ public class SQLProvider { /** 只读的列名字段名映射,Map<列名,字段名> */ final List fieldColumnList; + /** true 为可创建 */ + final boolean canCreate; + /** true 为可更新 */ final boolean canUpdate; @@ -313,6 +323,7 @@ public class SQLProvider { this.selectAllClause = selectAllClause.substring(0, selectAllClause.length() - 1); this.idFieldColumn = idFieldColumn; this.fieldColumnList = List.of(fieldColumnList.toArray(new FieldColumn[0])); // 转为只读 + canCreate = Creatable.class.isAssignableFrom(entityClass); canUpdate = Updatable.class.isAssignableFrom(entityClass); canDelete = Deletable.class.isAssignableFrom(entityClass); canDestroy = Destroyable.class.isAssignableFrom(entityClass);