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

这篇具有很好参考价值的文章主要介绍了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);

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

    @Override
    public 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博客文章来源地址https://www.toymoban.com/news/detail-636073.html

到了这里,关于JAVA实现存在更新不存在插入与及多余的进行删除(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis 中传入List实现 批量插入、批量更新、批量删除

    个人收藏使用 文章来自Mybatis 中传入List实现 批量插入、批量更新、批量删除 - chelsey3tsf - 博客园 (cnblogs.com) 1. 批量插入 : Mapper层: 对应的mapper.xml: 如果List数据量比较大,可以考虑将List分批次插入 2. 批量更新: 批量更新只提供更新单个字段的,因为更新多个字段无论哪种

    2024年02月11日
    浏览(47)
  • C语言中实现顺序表的插入、删除和更新操作(附带源码)

    C语言中,顺序表是一种线性表的存储结构,可以通过数组来实现。以下是顺序表的插入、删除和更新操作的基本示例: 删除操作: 更新操作: 这些示例代码演示了如何在C语言中实现顺序表的插入、删除和更新操作。你可以根据需要进行修改和扩展。 希望你也学会了,更多

    2024年01月24日
    浏览(32)
  • MYSQL不存在插入 存在更新的解决方法和对比

    设置主键id自增,name为唯一索引 /句: insert ignore into ,如果插入的数据会导致 UNIQUE索引 或 PRIMARY KEY 发生冲突/重复,则忽略此次操作/不插入数据,例: 这里已经存在 name=\\\'Jack”的数据,所以会忽略新插入的数据,受影响行数为 0,表数据不变 需要注意 主键会自增 当使用

    2024年02月02日
    浏览(25)
  • Springboot Mybatis 不存在插入数据,存在则更新数据

    是不是经常看到代码, 查一下数据库,如果存在数据,就做更新语句调用; 如果不存在,就插入。 今天该篇介绍的 是使用     INSERT INTO        ON DUPLICATE KEY UPDATE        来实现我们上述的场景, 不需要自己再判断来判断去的。 ON DUPLICATE key update 是根据主键索引或者唯一

    2024年02月13日
    浏览(23)
  • Java8 实现批量插入和更新,SpringBoot实现批量插入和更新,Mybatis实现批量插入和更新

    基于mybatis实现的批量插入和更新 由于直接执行批量所有数据可能会出现长度超出报错问题,使用如下方式即可解决 原理还是分配执行,这里的100就是设定每次执行最大数 这里使用插入作为例子,也可以使用批量更新 更新的写法

    2024年02月12日
    浏览(37)
  • Python操作excel进行插入、删除行操作实例演示,利用xlwings库实现

    插入行演示采用正序遍历操作,直接使用 xlwings 提供的 sheet.api.Rows(\\\"行数\\\").Insert() 方法就能实现整行插入处理。 需要注意的是 ,如果是前插入,要避免再次检测到刚才匹配过的内容,以防循环反复插入原位置。 调整前: 处理过程: 调整后: 删除行演示采用逆序遍历操作,

    2023年04月08日
    浏览(27)
  • Mybatis新增数据,存在就更新,不存在就添加,Mysql避免重复插入数据的4种方式

    即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据。 即插入数据时

    2024年02月11日
    浏览(29)
  • .NET 数据库大数据操作方案(插入、更新、删除、查询 、插入或更新)

    海量数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库达到极限性能,当然你如果不用sqlsugar了解一下原理也可以使用其他ORM实现   BulkCopy是一种用于高效批量插入大量数据

    2024年02月08日
    浏览(33)
  • ElasticSearch7.3学习(十六)----RestHighLevelClient Java api实现索引的创建、删除、是否存在、关闭、开启

    注意:导入的包区别,不同的包创建索引的方式不同。博主亲身实践,具体体现在createIndexRequest.mapping()里面。读者可自行试验。  由此可以猜想一下: 可以看到上述两种方式导入的包的子类名是相同的,但是具体对索引的操作方式可能是不同的。具体的区别博主暂时还不清

    2024年02月16日
    浏览(35)
  • Java进阶(3)——手动实现ArrayList & 源码的初步理解分析 & 数组插入数据和删除数据的问题

    1.ArrayList的结构分析,可迭代接口,是List的实现; 2.数组增加元素和删除元素的分析,何时扩容,如何扩容; 3.插入数据的复杂度O(N); 4.数组特点:查找和修改容易O(1);增加和删除复杂O(N); 增加元素 如果放不下怎么办?如何扩容? 扩容后如何操作? 扩容:每次为原来的

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包