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

cn.org.atool.fluent.mybatis.base.splice.FreeUpdate Maven / Gradle / Ivy

package cn.org.atool.fluent.mybatis.base.splice;

import cn.org.atool.fluent.mybatis.base.IRefs;
import cn.org.atool.fluent.mybatis.base.crud.BaseUpdate;
import cn.org.atool.fluent.mybatis.base.splice.FreeWrapperHelper.UpdateSetter;
import cn.org.atool.fluent.mybatis.metadata.DbType;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.util.List;

import static cn.org.atool.fluent.mybatis.base.splice.FreeWrapperHelper.UpdateOrderBy;
import static cn.org.atool.fluent.mybatis.base.splice.FreeWrapperHelper.UpdateWhere;

/**
 * FreeUpdate
 *
 * @author wudarui
 */
@Accessors(chain = true)
public class FreeUpdate extends BaseUpdate {
    public final UpdateSetter update = new UpdateSetter(this);

    public final UpdateWhere where = new UpdateWhere(this);

    public final UpdateOrderBy orderBy = new UpdateOrderBy(this);

    public FreeUpdate(String table) {
        super(table, EmptyEntity.class, FreeQuery.class);
    }

    @Override
    protected List allFields() {
        throw new RuntimeException("not support by FreeUpdate.");
    }

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

    /**
     * 完全自定义的sql
     * 使用此方法, Query的其它设置(select,where,order,group,limit等)将无效
     *
     * @param sql       用户定义的完整sql语句
     * @param parameter sql参数, 通过#{value} 或 #{field.field}占位
     * @return self
     */
    public FreeUpdate customizedByPlaceholder(String sql, Object parameter) {
        this.wrapperData.customizedSql(sql, parameter);
        return this;
    }

    /**
     * 完全自定义的sql
     * 使用此方法, Query的其它设置(select,where,order,group,limit等)将无效
     *
     * @param sql   用户定义的完整sql语句
     * @param paras sql参数, 通过sql中的'?'占位
     * @return self
     */
    public FreeUpdate customizedByQuestion(String sql, Object... paras) {
        String placeholder = this.wrapperData.paramSql(null, sql, paras);
        this.wrapperData.customizedSql(placeholder, null);
        return this;
    }

    @Setter
    private DbType dbType;

    @Override
    public DbType dbType() {
        return dbType == null ? IRefs.instance().defaultDbType() : dbType;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy