JAVA实现存在更新不存在插入与及多余的进行删除(三)

这个版本,主要是迭代重载了下save方法,不废话,直接上代码:

    /**
     * 保存数据,处理数据的增删改
     *
     * @param paramData 前台的参数
     * @param dbData    后台的数据
     * @param clazz     前后台参数对应的class
     * @param beanName      spring bean服务实现类名称 首字母转小写
     * @return  SUCCESS:操作成功
     */
    String saveData(List paramData, List dbData, Class clazz,String beanName);

    /**
     * 重载saveData 自适应找到对应的clazz与beanName
     *
     * @param paramData
     * @param dbData
     * @return
     */
    String saveData(List paramData, List dbData);

具体实现类对应的重载方法如下:

    @Override
    public String saveData(List paramData, List 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, ApplicationContextAware。

通过这个ApplicationContextAware获取到所有bean服务,肤浅地以实体类拼凑一下服务名,找到bean服务就作为这个调用的bean服务

这个更正都基于

JAVA实现存在更新不存在插入与及多余的进行删除(二)_mybatisplus存在更新否则新增_wackpa的博客-CSDN博客

你可能感兴趣的:(java,开发语言)