java8 Funtion函数式接口 mybatis查询

这次代码里面呢,需要针对大量的附表进行批量插入

历史代码是这样的

//查询工序下的产出物料信息
QueryWrapper<A> proRouteProcessOutQueryWrapper = new QueryWrapper<>();
proRouteProcessOutQueryWrapper.eq("route_process_id", proRouteProcess.getId());
proRouteProcessOutQueryWrapper.eq("del_flag", "0");
List<ProRouteProcessOut> routeProcessOutList = proRouteProcessOutMapper.selectList(proRouteProcessOutQueryWrapper);

//查询工序投入物料信息
QueryWrapper<B> proRouteProcessInQueryWrapper = new QueryWrapper<>();
proRouteProcessInQueryWrapper.eq("route_process_id", proRouteProcess.getId());
proRouteProcessInQueryWrapper.eq("del_flag", "0");
List<ProRouteProcessIn> routeProcessInList = proRouteProcessInMapper.selectList(proRouteProcessInQueryWrapper);


//查询工序参数信息
QueryWrapper<C> proRouteProcessParamQueryWrapper = new QueryWrapper<>();
proRouteProcessParamQueryWrapper.eq("route_process_id", proRouteProcess.getId());
proRouteProcessParamQueryWrapper.eq("del_flag", "0");
List<ProRouteProcessParam> routeProcessParamList = proRouteProcessParamMapper.selectList(proRouteProcessParamQueryWrapper);

//查询工序的文件信息
QueryWrapper<D> proRouteProcessFileQueryWrapper = new QueryWrapper<>();
proRouteProcessFileQueryWrapper.eq("route_process_id", proRouteProcess.getId());
proRouteProcessFileQueryWrapper.eq("del_flag", "0");
List<ProRouteProcessFile> routeProcessFileList = proRouteProcessFileMapper.selectList(proRouteProcessFileQueryWrapper);

里面存在大量的冗余信息,这个时候呢,Java8的Funcion就排上用场了,可以帮我们省略大量的重复代码。

先封装一个查询方法

// 封装查询逻辑的方法,接受具体的Mapper和查询条件构建器
public static <T> List<T> executeQuery(Function<QueryWrapper<T>, QueryWrapper<T>> queryCustomizer
        ,BaseMapper<T> mapper,
        List<Long> processIds) {
    QueryWrapper<T> queryWrapper = new QueryWrapper<>();
    // 假设T有getRouteProcessId方法
    queryWrapper.in("route_process_id", processIds);
    // 假设T继承了BaseEntity或类似的有getDelFlag方法的类
    queryWrapper.eq("del_flag", DELETE_NO);
    // 应用自定义的查询条件构建器
    queryWrapper = queryCustomizer.apply(queryWrapper);
    // 执行查询
    return mapper.selectList(queryWrapper);
}

接下来只需要传入我们的mapper就搞定了,简直不要太清爽

List<ProRouteProcessEquip> routeProcessEquipList = executeQuery(
        qw -> qw,
        proRouteProcessEquipMapper,
        processIds
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值