QueryWrapperX.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package com.jsh.erp.query;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
  4. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5. import org.springframework.util.StringUtils;
  6. import java.util.Collection;
  7. /**
  8. * 2022-09-29 龙涌
  9. * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能:
  10. *
  11. * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。
  12. *
  13. * @param <T> 数据类型
  14. */
  15. public class QueryWrapperX<T> extends QueryWrapper<T> {
  16. public QueryWrapperX<T> likeIfPresent(String column, String val) {
  17. if (StringUtils.hasText(val)) {
  18. return (QueryWrapperX<T>) super.like(column, val);
  19. }
  20. return this;
  21. }
  22. public QueryWrapperX<T> inIfPresent(String column, Collection<?> values) {
  23. if (!CollectionUtils.isEmpty(values)) {
  24. return (QueryWrapperX<T>) super.in(column, values);
  25. }
  26. return this;
  27. }
  28. public QueryWrapperX<T> inIfPresent(String column, Object... values) {
  29. if (!ArrayUtils.isEmpty(values)) {
  30. return (QueryWrapperX<T>) super.in(column, values);
  31. }
  32. return this;
  33. }
  34. public QueryWrapperX<T> eqIfPresent(String column, Object val) {
  35. if (val != null) {
  36. return (QueryWrapperX<T>) super.eq(column, val);
  37. }
  38. return this;
  39. }
  40. public QueryWrapperX<T> neIfPresent(String column, Object val) {
  41. if (val != null) {
  42. return (QueryWrapperX<T>) super.ne(column, val);
  43. }
  44. return this;
  45. }
  46. public QueryWrapperX<T> gtIfPresent(String column, Object val) {
  47. if (val != null) {
  48. return (QueryWrapperX<T>) super.gt(column, val);
  49. }
  50. return this;
  51. }
  52. public QueryWrapperX<T> geIfPresent(String column, Object val) {
  53. if (val != null) {
  54. return (QueryWrapperX<T>) super.ge(column, val);
  55. }
  56. return this;
  57. }
  58. public QueryWrapperX<T> ltIfPresent(String column, Object val) {
  59. if (val != null) {
  60. return (QueryWrapperX<T>) super.lt(column, val);
  61. }
  62. return this;
  63. }
  64. public QueryWrapperX<T> leIfPresent(String column, Object val) {
  65. if (val != null) {
  66. return (QueryWrapperX<T>) super.le(column, val);
  67. }
  68. return this;
  69. }
  70. public QueryWrapperX<T> betweenIfPresent(String column, Object val1, Object val2) {
  71. if (val1 != null && val2 != null) {
  72. return (QueryWrapperX<T>) super.between(column, val1, val2);
  73. }
  74. if (val1 != null) {
  75. return (QueryWrapperX<T>) ge(column, val1);
  76. }
  77. if (val2 != null) {
  78. return (QueryWrapperX<T>) le(column, val2);
  79. }
  80. return this;
  81. }
  82. // ========== 重写父类方法,方便链式调用 ==========
  83. @Override
  84. public QueryWrapperX<T> eq(boolean condition, String column, Object val) {
  85. super.eq(condition, column, val);
  86. return this;
  87. }
  88. @Override
  89. public QueryWrapperX<T> eq(String column, Object val) {
  90. super.eq(column, val);
  91. return this;
  92. }
  93. @Override
  94. public QueryWrapperX<T> orderByDesc(String column) {
  95. super.orderByDesc(true, column);
  96. return this;
  97. }
  98. @Override
  99. public QueryWrapperX<T> last(String lastSql) {
  100. super.last(lastSql);
  101. return this;
  102. }
  103. @Override
  104. public QueryWrapperX<T> in(String column, Collection<?> coll) {
  105. super.in(column, coll);
  106. return this;
  107. }
  108. }