package com.sonic.daosupport.wrapper;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author code
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface CriteriaField {
    /**
     * 对应Mysql Entity的字段名或者"Field__Operator"格式
     * @return String
     */
    String field() default "";

    Operator operator() default Operator.EQ;

    /**
     * 默认为true，当value为空集合的时候，自动过滤该查询条件.
     * 主要是考虑到调用方在用fastjson序列化的时候，会将null集合序列化为空集合
     * 所以默认将空集合过滤掉
     *
     * @return boolean
     */
    boolean filterEmpty() default true;

    /**
     * 默认为true，当value为null的时候，自动过滤该查询条件.
     *
     * @return boolean
     */
    boolean filterNull() default true;

    /**
     * 是否忽略该字段的查询条件
     *
     * @return
     */
    boolean ignore() default false;
}
