All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.openyuan.jpa.specification.handler.bean.BetweenValue Maven / Gradle / Ivy

package top.openyuan.jpa.specification.handler.bean;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用于区间查询的开始值和结束值的实体类.
 *
 * @author lzy on 2020-01-28.
 * @since v1.0.0
 */
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class BetweenValue> {

    /**
     * 开始值.
     */
    private final T start;

    /**
     * 结束值.
     */
    private final T end;

    /**
     * 构造含有开始值和结束值的用于区间查询 {@link BetweenValue} 实例.
     *
     * @param start 开始值,该值的类型必须实现了 {@link Comparable} 接口,表明才能进行大小的比较
     * @param end 结束值,该值的类型必须实现了 {@link Comparable} 接口,表明才能进行大小的比较
     * @param  区间比较的值类型,该类型必须实现了 {@link Comparable} 接口
     * @return {@link BetweenValue} 实例
     */
    public static > BetweenValue of(T start, T end) {
        return new BetweenValue<>(start, end);
    }

    /**
     * 构造仅含有开始值的用于区间查询的 {@link BetweenValue} 实例.
     *
     * @param start 开始值,该值的类型必须实现了 {@link Comparable} 接口,表明才能进行大小的比较
     * @param  区间比较的值类型,该类型必须实现了 {@link Comparable} 接口
     * @return {@link BetweenValue} 实例
     */
    public static > BetweenValue ofStart(T start) {
        return new BetweenValue<>(start, null);
    }

    /**
     * 构造仅含有结束值的用于区间查询的 {@link BetweenValue} 实例.
     *
     * @param end 结束值,该值的类型必须实现了 {@link Comparable} 接口,表明才能进行大小的比较
     * @param  区间比较的值类型,该类型必须实现了 {@link Comparable} 接口
     * @return {@link BetweenValue} 实例
     */
    public static > BetweenValue ofEnd(T end) {
        return new BetweenValue<>(null, end);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy