SqlContext.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package org.example.join.model;
  2. import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
  3. import com.baomidou.mybatisplus.core.metadata.TableInfo;
  4. import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
  5. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  6. import org.example.join.model.table.Table;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.StringJoiner;
  10. @SuppressWarnings("unchecked")
  11. public class SqlContext {
  12. private static final ThreadLocal<Map<String, Object>> threadLocal = ThreadLocal.withInitial(HashMap::new);
  13. private static final String PARAM_NUMBER = "paramNumber";
  14. private static final String PARAM_MAP = "paramMap";
  15. public static void init(Map<String, Object> paramMap) {
  16. Map<String, Object> map = threadLocal.get();
  17. map.put(PARAM_NUMBER, 1);
  18. map.put(PARAM_MAP, paramMap);
  19. threadLocal.set(map);
  20. }
  21. public static void remove() {
  22. threadLocal.remove();
  23. }
  24. public static void putValue(StringJoiner joiner, Object value) {
  25. if (value instanceof IFormat iFormat) {
  26. joiner.add(iFormat.toSql());
  27. } else {
  28. String mapKey = getParamKey();
  29. joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
  30. getParamMap().put(mapKey, value);
  31. }
  32. }
  33. public static String getTableDelFlag(Table table) {
  34. TableInfo tableInfo = TableInfoHelper.getTableInfo(table.getName());
  35. if (!tableInfo.isWithLogicDelete()) {
  36. return null;
  37. }
  38. TableFieldInfo logicDeleteFieldInfo = tableInfo.getLogicDeleteFieldInfo();
  39. return logicDeleteFieldInfo.getColumn();
  40. }
  41. public static String getParamKey() {
  42. Map<String, Object> map = threadLocal.get();
  43. int paramNumber = (int) map.get(PARAM_NUMBER);
  44. map.put(PARAM_NUMBER, paramNumber + 1);
  45. return SqlConstant.SQL_PARAM + paramNumber;
  46. }
  47. public static Map<String, Object> getParamMap() {
  48. Map<String, Object> map = threadLocal.get();
  49. return (Map<String, Object>) map.get(PARAM_MAP);
  50. }
  51. }