123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package com.jsh.erp.query;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import org.springframework.util.StringUtils;
- import java.util.Collection;
- /**
- * 2022-09-29 龙涌
- * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能:
- *
- * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。
- *
- * @param <T> 数据类型
- */
- public class QueryWrapperX<T> extends QueryWrapper<T> {
- public QueryWrapperX<T> likeIfPresent(String column, String val) {
- if (StringUtils.hasText(val)) {
- return (QueryWrapperX<T>) super.like(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> inIfPresent(String column, Collection<?> values) {
- if (!CollectionUtils.isEmpty(values)) {
- return (QueryWrapperX<T>) super.in(column, values);
- }
- return this;
- }
- public QueryWrapperX<T> inIfPresent(String column, Object... values) {
- if (!ArrayUtils.isEmpty(values)) {
- return (QueryWrapperX<T>) super.in(column, values);
- }
- return this;
- }
- public QueryWrapperX<T> eqIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.eq(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> neIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.ne(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> gtIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.gt(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> geIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.ge(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> ltIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.lt(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> leIfPresent(String column, Object val) {
- if (val != null) {
- return (QueryWrapperX<T>) super.le(column, val);
- }
- return this;
- }
- public QueryWrapperX<T> betweenIfPresent(String column, Object val1, Object val2) {
- if (val1 != null && val2 != null) {
- return (QueryWrapperX<T>) super.between(column, val1, val2);
- }
- if (val1 != null) {
- return (QueryWrapperX<T>) ge(column, val1);
- }
- if (val2 != null) {
- return (QueryWrapperX<T>) le(column, val2);
- }
- return this;
- }
- // ========== 重写父类方法,方便链式调用 ==========
- @Override
- public QueryWrapperX<T> eq(boolean condition, String column, Object val) {
- super.eq(condition, column, val);
- return this;
- }
- @Override
- public QueryWrapperX<T> eq(String column, Object val) {
- super.eq(column, val);
- return this;
- }
- @Override
- public QueryWrapperX<T> orderByDesc(String column) {
- super.orderByDesc(true, column);
- return this;
- }
- @Override
- public QueryWrapperX<T> last(String lastSql) {
- super.last(lastSql);
- return this;
- }
- @Override
- public QueryWrapperX<T> in(String column, Collection<?> coll) {
- super.in(column, coll);
- return this;
- }
- }
|