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

cn.org.atool.fluent.mybatis.model.FormQuery Maven / Gradle / Ivy

package cn.org.atool.fluent.mybatis.model;

import cn.org.atool.fluent.mybatis.base.IEntity;
import cn.org.atool.fluent.mybatis.base.crud.FormSetter;
import cn.org.atool.fluent.mybatis.base.crud.IQuery;
import cn.org.atool.fluent.mybatis.base.model.op.SqlOps;
import cn.org.atool.fluent.mybatis.segment.WhereBase;
import cn.org.atool.fluent.mybatis.segment.model.WrapperData;
import lombok.NonNull;

import java.util.Map;

/**
 * 通用的Form形式查询
 *
 * @param 
 * @param 
 * @author darui.wu
 */
@SuppressWarnings({"unused", "rawtypes", "unchecked"})
public class FormQuery implements IFormQuery {
    private final Class entityClazz;
    private final Map form;
    private final IQuery query;
    private final FormSetter setter;

    public FormQuery(@NonNull IEntity entity, @NonNull IQuery query, @NonNull S setter) {
        this.form = entity.toEntityMap();
        this.query = query;
        this.setter = setter;
        this.entityClazz = setter.entityClass();
    }

    public FormQuery(@NonNull IQuery query, @NonNull Map form, @NonNull S setter) {
        this.form = form;
        this.query = query;
        this.setter = setter;
        this.entityClazz = setter.entityClass();
    }

    @Override
    public Class entityClass() {
        return this.entityClazz;
    }

    @Override
    public S op(String op) {
        this.setter.set(c -> this.query.where().apply(c.column, SqlOps.get(op), form.get(c.name)));
        return (S) setter;
    }

    @Override
    public IFormQuery distinct() {
        this.query.distinct();
        return this;
    }

    @Override
    public IFormQuery selectAll() {
        this.query.selectAll();
        return this;
    }

    @Override
    public IFormQuery selectId() {
        this.query.selectId();
        return this;
    }

    @Override
    public IFormQuery limit(int limit) {
        this.query.limit(limit);
        return this;
    }

    @Override
    public IFormQuery limit(int start, int limit) {
        this.query.limit(start, limit);
        return this;
    }

    @Override
    public IFormQuery last(String lastSql) {
        this.query.last(lastSql);
        return this;
    }

    @Override
    public WhereBase where() {
        return this.query.where();
    }

    @Override
    public WrapperData getWrapperData() {
        return this.query.getWrapperData();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy