mybatis-plus 泛型传参,100行代码变10行

mybatis-plus 泛型传参,100行代码变10行

概要

做了一个功能。需要把基础数据的几十个类数据复制一份出来,当然这也不是什么难事,就是重复的代码一直拷贝复制拷贝复制,太繁琐了。那就需要解决一个问题,那就是:动态构建查询条件的泛型方法。不说了 直接上代码。

技术细节

private void copyListBeanNotNull2Bean(Long oldCompanyId,Long newCompanyId,Class<?  extends BaseComEntity> pojoClass){


        String []mapperClassNameArr = pojoClass.getName().split("\\.");
        String mapperClassName = org.thymeleaf.util.StringUtils.unCapitalize(mapperClassNameArr[mapperClassNameArr.length-1])+ "Mapper";
        EnhanceBaseMapper baseMapper = (EnhanceBaseMapper) SpringContextUtil.getBean(mapperClassName);

        List<? extends BaseComEntity> oldList = selectByCompanyAndDelTag(oldCompanyId, baseMapper,pojoClass);

        List<Object> newList = new ArrayList<>();
        oldList.forEach(obj -> {
            obj.setId(IdUtil.CreateSnowFlakeId());
            obj.setCompanyId(newCompanyId);
            newList.add(obj);
        });

        if(!newList.isEmpty()){
            baseMapper.batchInsertSelective(newList);
        }


    }
public <T  extends BaseComEntity> List<T> selectByCompanyAndDelTag(Long oldComId, BaseMapper<T> baseMapper,Class<T> entityType ) {
        LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>(entityType);
        queryWrapper.eq(T::getCompanyId, oldComId)
                .eq(T::getDelTag, false);
        return baseMapper.selectList(queryWrapper);
    }

小结

怎么样。这样是不是比你直接复制粘贴几十个类,再一个个去selectList简单多了呀。
###技术分享###

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值