auto sort for BaseMapper.listOrder when entity creatable or updatable

This commit is contained in:
Timi
2025-10-29 11:22:57 +08:00
parent 3ae1ccedb7
commit f2689ab812

View File

@ -64,6 +64,13 @@ public class SQLProvider {
sql.append(", "); sql.append(", ");
} }
sql.deleteCharAt(sql.length() - 2); 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(); return sql.append(" LIMIT %s, %s".formatted(offset, limit)).toString();
} }
@ -258,6 +265,9 @@ public class SQLProvider {
/** 只读的列名字段名映射Map<列名,字段名> */ /** 只读的列名字段名映射Map<列名,字段名> */
final List<FieldColumn> fieldColumnList; final List<FieldColumn> fieldColumnList;
/** true 为可创建 */
final boolean canCreate;
/** true 为可更新 */ /** true 为可更新 */
final boolean canUpdate; final boolean canUpdate;
@ -313,6 +323,7 @@ public class SQLProvider {
this.selectAllClause = selectAllClause.substring(0, selectAllClause.length() - 1); this.selectAllClause = selectAllClause.substring(0, selectAllClause.length() - 1);
this.idFieldColumn = idFieldColumn; this.idFieldColumn = idFieldColumn;
this.fieldColumnList = List.of(fieldColumnList.toArray(new FieldColumn[0])); // 转为只读 this.fieldColumnList = List.of(fieldColumnList.toArray(new FieldColumn[0])); // 转为只读
canCreate = Creatable.class.isAssignableFrom(entityClass);
canUpdate = Updatable.class.isAssignableFrom(entityClass); canUpdate = Updatable.class.isAssignableFrom(entityClass);
canDelete = Deletable.class.isAssignableFrom(entityClass); canDelete = Deletable.class.isAssignableFrom(entityClass);
canDestroy = Destroyable.class.isAssignableFrom(entityClass); canDestroy = Destroyable.class.isAssignableFrom(entityClass);