package org.example.join.model; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.StringPool; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.example.join.sql.SqlConstant; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Getter @RequiredArgsConstructor public class TableJoin implements ITable { private final String joinType; private final ITable table; private final List queryConditionList = new ArrayList<>(); @Override public String toSql() { String on = queryConditionList.stream() .filter(ObjectUtil::isNotNull) .map(QueryCondition::toSql) .filter(StrUtil::isNotBlank) .collect(Collectors.joining(SqlConstant.AND)); return joinType + table.toSql() + (StrUtil.isNotBlank(on) ? SqlConstant.ON + on : StringPool.EMPTY); } }