package org.example.join.sql; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.toolkit.StringPool; import org.example.join.domain.QueryColumn; import org.example.join.domain.QueryConditionOrder; import org.example.join.util.SqlConstant; import java.util.Arrays; import java.util.Objects; public class Where extends SqlExecute { private final Sql sql; protected Where(Sql sql) { super(sql); this.sql = sql; } public Where groupBy(QueryColumn... queryColumns) { if (ObjectUtil.isEmpty(queryColumns)) { return this; } sql.groupByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).toList()); return this; } public Where orderBy(QueryConditionOrder... queryConditionOrderBIES) { if (ObjectUtil.isEmpty(queryConditionOrderBIES)) { return this; } sql.orderByList.addAll(Arrays.stream(queryConditionOrderBIES).filter(Objects::nonNull).toList()); return this; } public Where orderByAsc(QueryColumn... queryColumns) { if (ObjectUtil.isEmpty(queryColumns)) { return this; } sql.orderByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).map(QueryColumn::asc).toList()); return this; } public Where orderByDesc(QueryColumn... queryColumns) { if (ObjectUtil.isEmpty(queryColumns)) { return this; } sql.orderByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).map(QueryColumn::desc).toList()); return this; } public Where limit(Number offset) { sql.limit = SqlConstant.LIMIT + offset.longValue(); return this; } public Where limit(Number offset, Number rows) { sql.limit = SqlConstant.LIMIT + offset.longValue() + StringPool.COMMA + rows.longValue(); return this; } }