这个版本,主要是迭代重载了下save方法,不废话,直接上代码:
/*** 保存数据,处理数据的增删改** @param paramData 前台的参数* @param dbData 后台的数据* @param clazz 前后台参数对应的class* @param beanName spring bean服务实现类名称 首字母转小写* @return SUCCESS:操作成功*/String saveData(List<T> paramData, List<T> dbData, Class clazz,String beanName);/*** 重载saveData 自适应找到对应的clazz与beanName** @param paramData* @param dbData* @return*/String saveData(List<T> paramData, List<T> dbData);
具体实现类对应的重载方法如下:
@Overridepublic String saveData(List<T> paramData, List<T> dbData) {if (CollectionUtils.isEmpty(paramData) && CollectionUtils.isEmpty(dbData)) {throw new CustomException("入参与数据库数据不能都为空");}Class clazz;clazz = CollectionUtils.isNotEmpty(paramData) ? paramData.get(0).getClass() : dbData.get(0).getClass();String name = clazz.getSimpleName();char[] charArray = name.toCharArray();charArray[0] += 32;String possibleBeanName = String.valueOf(charArray) + "ServiceImpl";String beanName = "";String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();for (String beanDefinitionName : beanDefinitionNames) {if (beanDefinitionName.indexOf(possibleBeanName) > -1) {beanName = beanDefinitionName;return saveData(paramData, dbData, clazz, beanName);}}throw new CustomException("根据实体类" + name + "没找到对应的bean服务");}
然后就是头部加多了
implements ICudDataService<T>, ApplicationContextAware。
通过这个ApplicationContextAware获取到所有bean服务,肤浅地以实体类拼凑一下服务名,找到bean服务就作为这个调用的bean服务
这个更正都基于
JAVA实现存在更新不存在插入与及多余的进行删除(二)_mybatisplus存在更新否则新增_wackpa的博客-CSDN博客