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

net.guerlab.spring.searchparams.handler.CollectionHandler Maven / Gradle / Ivy

package net.guerlab.spring.searchparams.handler;

import java.util.Collection;
import java.util.Objects;
import java.util.stream.Collectors;

import net.guerlab.spring.searchparams.SearchModelType;
import net.guerlab.spring.searchparams.SearchParamsHandler;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;

/**
 * @author guer
 *
 */
public class CollectionHandler implements SearchParamsHandler {

    /**
     * 默认处理实例
     */
    public static final CollectionHandler INSTANCE = new CollectionHandler();

    @SuppressWarnings("unchecked")
    @Override
    public void setValue(
            final Example example,
            final String columnName,
            final Object value,
            final SearchModelType searchModelType) {
        Collection collection = (Collection) value;

        if (collection.isEmpty()) {
            return;
        }

        Collection list = collection.stream().filter(Objects::nonNull).collect(Collectors.toList());

        if (list.isEmpty()) {
            return;
        }

        Criteria criteria = example.and();
        if (searchModelType == SearchModelType.NOT_IN) {
            criteria.andNotIn(columnName, list);
        } else {
            criteria.andIn(columnName, list);
        }

    }

}