@TableField(value = "bsm",typeHandler = JacksonTypeHandler.class)
<resultMap id="vxDevice" type="cn.dxsc.v2x.device.entity.deviceconfig.service.ServiceConfigMidd">
<result column="spat" property="spatConfig" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
</resultMap>
扫描相关包下或者类的信息:
/**
* 自动扫描指定包内所有带 NonStructuredMsg 注解的类
*/
@Bean
public void searchMsgObject(){
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
final String resourcePattern = "/**/*.class";
try {
String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
ClassUtils.convertClassNameToResourcePath(PACKAGE_NAME_DATA_OBJECT) + resourcePattern;
Resource[] resources = resourcePatternResolver.getResources(pattern);
//MetadataReader 的工厂类
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver);
for (Resource resource : resources) {
//用于读取类信息
MetadataReader reader = readerFactory.getMetadataReader(resource);
//扫描到的class
String classname = reader.getClassMetadata().getClassName();
Class<?> clazz = Class.forName(classname);
//判断是否有指定注解
try {
if (clazz.isAnnotationPresent(NonStructuredMsg.class)) {
NonStructuredMsg nonStructuredMsgInfo = clazz.getDeclaredAnnotation(NonStructuredMsg.class);
GetDataUtil.symbolClassMap.put(nonStructuredMsgInfo.symbol(),clazz);
GetDataUtil.classNameMsgMap.put(clazz.getName(), nonStructuredMsgInfo);
}
}catch (Exception ignored){
}
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}