package org.example.join.model; import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.StringPool; import org.example.join.model.table.Table; import java.util.HashMap; import java.util.Map; import java.util.StringJoiner; @SuppressWarnings("unchecked") public class SqlContext { private static final ThreadLocal> threadLocal = ThreadLocal.withInitial(HashMap::new); private static final String PARAM_NUMBER = "paramNumber"; private static final String PARAM_MAP = "paramMap"; public static void init(Map paramMap) { Map map = threadLocal.get(); map.put(PARAM_NUMBER, 1); map.put(PARAM_MAP, paramMap); threadLocal.set(map); } public static void remove() { threadLocal.remove(); } public static void putValue(StringJoiner joiner, Object value) { if (value instanceof IFormat iFormat) { joiner.add(iFormat.toSql()); } else { String mapKey = getParamKey(); joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE); getParamMap().put(mapKey, value); } } public static String getTableDelFlag(Table table) { TableInfo tableInfo = TableInfoHelper.getTableInfo(table.getName()); if (!tableInfo.isWithLogicDelete()) { return null; } TableFieldInfo logicDeleteFieldInfo = tableInfo.getLogicDeleteFieldInfo(); return logicDeleteFieldInfo.getColumn(); } public static String getParamKey() { Map map = threadLocal.get(); int paramNumber = (int) map.get(PARAM_NUMBER); map.put(PARAM_NUMBER, paramNumber + 1); return SqlConstant.SQL_PARAM + paramNumber; } public static Map getParamMap() { Map map = threadLocal.get(); return (Map) map.get(PARAM_MAP); } }