
com.easy.query.api.proxy.entity.update.EntityUpdatable Maven / Gradle / Ivy
package com.easy.query.api.proxy.entity.update;
import com.easy.query.api.proxy.entity.insert.extension.ProxyColumnConfigurer;
import com.easy.query.api.proxy.entity.insert.extension.ProxyColumnConfigurerImpl;
import com.easy.query.core.basic.api.internal.ConfigureVersionable;
import com.easy.query.core.basic.api.internal.SQLExecuteStrategy;
import com.easy.query.core.basic.api.update.ClientEntityUpdatable;
import com.easy.query.core.basic.api.update.Updatable;
import com.easy.query.core.basic.jdbc.parameter.DefaultToSQLContext;
import com.easy.query.core.basic.jdbc.parameter.ToSQLContext;
import com.easy.query.core.common.ToSQLResult;
import com.easy.query.core.expression.lambda.SQLExpression2;
import com.easy.query.core.expression.lambda.SQLFuncExpression1;
import com.easy.query.core.proxy.ProxyEntity;
import com.easy.query.core.proxy.SQLSelectExpression;
/**
* create time 2023/12/7 13:55
* 文件说明
*
* @author xuejiaming
*/
public interface EntityUpdatable, T> extends Updatable>, SQLExecuteStrategy>,
ConfigureVersionable> {
TProxy getTProxy();
ClientEntityUpdatable getClientUpdate();
default EntityUpdatable columnConfigure(SQLExpression2> columnConfigureExpression) {
getClientUpdate().columnConfigure(configurer -> {
columnConfigureExpression.apply(getTProxy(), new ProxyColumnConfigurerImpl<>(configurer.getConfigurer()));
});
return this;
}
/**
* 只更新列
*
* @param columnSelectorExpression
* @return
*/
default EntityUpdatable setColumns(SQLFuncExpression1 columnSelectorExpression) {
return setColumns(true, columnSelectorExpression);
}
default EntityUpdatable setColumns(boolean condition, SQLFuncExpression1 columnSelectorExpression) {
if (condition) {
getClientUpdate().setColumns(selector -> {
SQLSelectExpression sqlSelectExpression = columnSelectorExpression.apply(getTProxy());
sqlSelectExpression.accept(selector.getOnlySelector());
});
}
return this;
}
default EntityUpdatable setIgnoreColumns(SQLFuncExpression1 columnSelectorExpression) {
return setIgnoreColumns(true, columnSelectorExpression);
}
default EntityUpdatable setIgnoreColumns(boolean condition, SQLFuncExpression1 columnSelectorExpression) {
getClientUpdate().setIgnoreColumns(condition, selector -> {
SQLSelectExpression sqlSelectExpression = columnSelectorExpression.apply(getTProxy());
sqlSelectExpression.accept(selector.getOnlySelector());
});
return this;
}
default EntityUpdatable whereColumns(SQLFuncExpression1 columnSelectorExpression) {
return whereColumns(true, columnSelectorExpression);
}
default EntityUpdatable whereColumns(boolean condition, SQLFuncExpression1 columnSelectorExpression) {
getClientUpdate().whereColumns(condition, selector -> {
SQLSelectExpression sqlSelectExpression = columnSelectorExpression.apply(getTProxy());
sqlSelectExpression.accept(selector.getOnlySelector());
});
return this;
}
default String toSQL(Object entity) {
return getClientUpdate().toSQL(entity);
}
default String toSQL(Object entity, ToSQLContext toSQLContext) {
return getClientUpdate().toSQL(entity, toSQLContext);
}
/**
* 传入生成sql的上下文用来获取生成sql后的表达式内部的参数
*
* @return 包含sql和sql结果比如参数
*/
default ToSQLResult toSQLResult(Object entity) {
return getClientUpdate().toSQLResult(entity);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy