package com.vci.ubcs.ddl.processor.dll; import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO; import com.vci.ubcs.ddl.mapper.DllDmMapper; import com.vci.ubcs.ddl.mapper.DllMapper; import com.vci.ubcs.starter.util.VciSpringUtil; import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; import org.apache.commons.collections4.BidiMap; import org.springframework.stereotype.Component; import java.util.List; /** * Description: 应用于达梦数据,生成创建表操作sql的处理器 * * @author LiHang * @date 2023/4/24 */ @Component public class DllDmMapperProcessor extends DllMapperProcessor{ private static final DllMapper MAPPER = VciSpringUtil.getBean(DllDmMapper.class); private static final BidiMap FIELD_MAP = getMappingMapCopy(); static { // 需要重新映射的字段类型在这里写 FIELD_MAP.put(VciFieldTypeEnum.VTDouble,new DdlFieldMappingAttrBO("DOUBLE",26,8,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTInteger,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTLong,new DdlFieldMappingAttrBO("BIGINT",22,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTBoolean,new DdlFieldMappingAttrBO("VARCHAR",5,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTDate,new DdlFieldMappingAttrBO("DATE",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTDateTime,new DdlFieldMappingAttrBO("TIMESTAMP",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTTime,new DdlFieldMappingAttrBO("TIME",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTFilePath,new DdlFieldMappingAttrBO("TEXT",null,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTClob,new DdlFieldMappingAttrBO("CLOB",100,null,true,null)); FIELD_MAP.put(VciFieldTypeEnum.VTString,new DdlFieldMappingAttrBO("VARCHAR",255,null,true,null)); } public DllDmMapperProcessor() { super(MAPPER); System.out.println("-----------------"); if (MAPPER != null){ System.out.println("[success]::加载达梦数据库DLL操作服务成功"); }else { System.out.println("[fail]::加载达梦数据库DLL操作服务失败"); } } @Override public boolean support(String url) { return "dm.jdbc.driver.DmDriver".equals(url); } @Override protected DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum) { return getMappingBOInMap(fieldTypeEnum,FIELD_MAP); } /** * 按数据库字段类型列举所有的VCI字段类型 * * @param columnStr 数据库字段类型 * @return VCI字段类型 */ @Override public List listFieldByColumnStr(String columnStr) { return listFieldInMapByColumnStr(columnStr,FIELD_MAP); } @Override public VciFieldTypeEnum getFieldTypeByColumnStr(String columnStr, Integer length) { return getFieldTypeBeColumnStrInMap(columnStr,length,FIELD_MAP); } }