当前位置: 首页 > news >正文

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

这个版本,主要是迭代重载了下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博客

http://www.lryc.cn/news/108632.html

相关文章:

  • iMX6ULL驱动开发 | OLED显示屏SPI驱动实现(SH1106,ssd1306)
  • 拥抱创新:用Kotlin开发高效Android应用
  • Effective Java笔记(20)接口优于抽象类
  • react学习笔记——1. hello react
  • 明明已经安装字体,但IDEA、CLION无法找到思源黑体/Source Hans Sans的问题解决
  • 2023-08-03力扣今日四题
  • 【学会动态规划】最佳买卖股票时机含冷冻期(15)
  • 随机RSI震荡指标公式(StochRSI),RSI和KDJ二合一
  • 轻松搭建酒店小程序
  • 算法通过村——Hash和队列问题解析
  • 租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发
  • 后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
  • Mac 安装不在 Apple 商店授权的应用程序
  • 【MyBatis】MyBatis把空字符串转换成0的问题处理方案(96)
  • OpenLayers实战,OpenLayers获取移动端精确定位,OpenLayers适配App混合H5方式调用手机定位位置并定位到指定点
  • Go指针取址问题:循环后每次都拿到相同内容
  • 用Rust实现23种设计模式之简单工厂
  • SpringBoot + minio实现分片上传、秒传、续传
  • logback 里面设置 自动删除3天之前的日志
  • 对于数据库查询索引和查字典索引的理解
  • git删除已经提交的大文件
  • 【数据分析】pandas 一
  • 题解 | #G.Gcd# 2023牛客暑期多校6
  • 苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)
  • 【多线程初阶】多线程案例之单例模式
  • 跨境选品怎么选?建议独立站卖家收下这份利基产品查找攻略!
  • [C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...
  • opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()
  • Windows 环境Kubernetes安装
  • 自建类ChatGPT服务:本地化部署与远程访问教程