Where.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package org.example.join.sql;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  4. import org.example.join.domain.QueryColumn;
  5. import org.example.join.domain.QueryConditionOrder;
  6. import org.example.join.util.SqlConstant;
  7. import java.util.Arrays;
  8. import java.util.Objects;
  9. public class Where<R> extends SqlExecute<R> {
  10. private final Sql<R> sql;
  11. protected Where(Sql<R> sql) {
  12. super(sql);
  13. this.sql = sql;
  14. }
  15. public Where<R> groupBy(QueryColumn... queryColumns) {
  16. if (ObjectUtil.isEmpty(queryColumns)) {
  17. return this;
  18. }
  19. sql.groupByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).toList());
  20. return this;
  21. }
  22. public Where<R> orderBy(QueryConditionOrder... queryConditionOrderBIES) {
  23. if (ObjectUtil.isEmpty(queryConditionOrderBIES)) {
  24. return this;
  25. }
  26. sql.orderByList.addAll(Arrays.stream(queryConditionOrderBIES).filter(Objects::nonNull).toList());
  27. return this;
  28. }
  29. public Where<R> orderByAsc(QueryColumn... queryColumns) {
  30. if (ObjectUtil.isEmpty(queryColumns)) {
  31. return this;
  32. }
  33. sql.orderByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).map(QueryColumn::asc).toList());
  34. return this;
  35. }
  36. public Where<R> orderByDesc(QueryColumn... queryColumns) {
  37. if (ObjectUtil.isEmpty(queryColumns)) {
  38. return this;
  39. }
  40. sql.orderByList.addAll(Arrays.stream(queryColumns).filter(Objects::nonNull).map(QueryColumn::desc).toList());
  41. return this;
  42. }
  43. public Where<R> limit(Number offset) {
  44. sql.limit = SqlConstant.LIMIT + offset.longValue();
  45. return this;
  46. }
  47. public Where<R> limit(Number offset, Number rows) {
  48. sql.limit = SqlConstant.LIMIT + offset.longValue() + StringPool.COMMA + rows.longValue();
  49. return this;
  50. }
  51. }