
com.easy.query.api.proxy.extension.casewhen.CaseWhenEntityBuilder Maven / Gradle / Ivy
package com.easy.query.api.proxy.extension.casewhen;
import com.easy.query.api.proxy.util.EasyParamExpressionUtil;
import com.easy.query.core.expression.lambda.SQLActionExpression;
import com.easy.query.core.expression.segment.scec.expression.ParamExpression;
import com.easy.query.core.expression.sql.builder.EntityExpressionBuilder;
import com.easy.query.core.extension.casewhen.CaseWhenBuilderExpression;
import com.easy.query.core.func.SQLFunction;
import com.easy.query.core.proxy.core.EntitySQLContext;
import com.easy.query.core.proxy.extension.functions.executor.ColumnFunctionCompareComparableAnyChainExpression;
import com.easy.query.core.proxy.extension.functions.executor.impl.ColumnFunctionCompareComparableAnyChainExpressionImpl;
import java.util.Objects;
/**
* create time 2024/2/27 22:04
* 文件说明
*
* @author xuejiaming
*/
public class CaseWhenEntityBuilder {
private final CaseWhenBuilderExpression caseWhenBuilder;
private final EntitySQLContext entitySQLContext;
public CaseWhenEntityBuilder(EntitySQLContext entitySQLContext){
this.entitySQLContext = entitySQLContext;
EntityExpressionBuilder entityExpressionBuilder = entitySQLContext.getEntityExpressionBuilder();
Objects.requireNonNull(entityExpressionBuilder,"CaseWhenEntityBuilder entitySQLContext.getEntityExpressionBuilder() is null");
this.caseWhenBuilder=new CaseWhenBuilderExpression(entitySQLContext.getRuntimeContext(),entityExpressionBuilder.getExpressionContext());
}
public CaseWhenThenEntityBuilder caseWhen(SQLActionExpression sqlActionExpression){
return new CaseWhenThenEntityBuilder(this,entitySQLContext,caseWhenBuilder,sqlActionExpression);
}
// public CaseWhenEntityBuilder caseWhen(SQLActionExpression sqlActionExpression, PropTypeColumn then){
// caseWhenBuilder.caseWhen(filter->{
// entitySQLContext._where(filter, sqlActionExpression);
// },then);
// return this;
// }
public ColumnFunctionCompareComparableAnyChainExpression elseEnd(TV elseValue){
ParamExpression paramExpression = EasyParamExpressionUtil.getParamExpression(entitySQLContext, elseValue);
SQLFunction sqlFunction = caseWhenBuilder.elseEnd(paramExpression);
return new ColumnFunctionCompareComparableAnyChainExpressionImpl<>(entitySQLContext,null,null, f->sqlFunction);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy