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

公用代码片码抽取需要不断的强化代码复用意识

抽取前:

    public void handleContext(UniterChineseSelectRequest context) {
    
        IPage<UniterChinese> page = context.buildPage();
        LambdaQueryWrapper<UniterChinese> query= context.buildQuery();
        IPage<UniterChinese> uniterChinesePage = uniterChineseMapper.selectPage(page,query);

        List<UniterChinese> uniterChineses = uniterChinesePage.getRecords();
        List<UniterChineseListVo> uniterChineseVos = list2list(uniterChineses, UniterChineseListVo::new);

        context.setResult(uniterChineseVos);
        context.setTotal(uniterChinesePage.getTotal());
}

抽取后:

    public void handleContext(UniterChineseSelectRequest context) {
    
        IPage<UniterChinese> pageResult = 
        uniterChineseMapper.selectPage(context.buildPage(), context.buildQuery());
        
        context.setPageResult(pageResult,UniterChineseListVo::new);
}

抽取的公用代码片断:

       public <T, E> void setPageResult(IPage<T> pageResult, Function<T, E> fun) {
        List<T> ts = pageResult.getRecords();
        List<E> es = ZYListUtils.list2list(ts, fun);
        this.setResult(es);
        this.setTotal(pageResult.getTotal());
    }
   public static <O, T> List<T> list2list(List<O> os, Function<O, ? extends T> target, boolean needClearRepeat) {
        List<T> ts = new ArrayList<>();
        if (null == os || os.size() == 0) {
            return ts;
        }
        os.forEach(o -> {
            T apply = target.apply(o);
            if (ZYStrUtils.isNotNull(apply)) {
                if (needClearRepeat) {
                    if (!ts.contains(apply)) {
                        ts.add(apply);
                    }
                } else {
                    ts.add(apply);
                }
            }
        });

        return ts;
    }

http://www.kler.cn/news/316375.html

相关文章:

  • 【高效且应用广泛的排序 —— 快速排序算法】
  • 如何让程序等待输入
  • springboot 整合酷狗获取MV视频最高画质(使用自己账户)
  • 2024人工智能结课作业-DFS/BFS/Astar解决数码问题
  • Linux主流Web服务器:你选择哪一款?
  • 华为---以太网静态路由配置使用下一跳通信正常,而使用出接口无法通信
  • React项目实战(React后台管理系统、TypeScript+React18)
  • 锤炼核心技能以应对编程革命
  • threejs加载高度图渲染点云,不支持tiff
  • 【Linux:共享内存】
  • C# 从字符串中分离文件路径、文件名及扩展名
  • C# winforms DataGridView设置数据源自动显示表格
  • Go 第二期
  • 界面控件Telerik UI for WinForms 2024 Q3概览 - 支持合并单元格等
  • (已解决)vscode如何选择python解释器
  • 【学习笔记】SSL/TLS安全机制之HSTS
  • apt-get install 安装的tomcat配置
  • biopython提取.cif文件的变换矩阵
  • spring全家桶使用教程
  • Kotlin 操作符 in 的基本使用(十)
  • docker存储
  • 2.《DevOps》系列K8S部署CICD流水线之部署NFS网络存储与K8S创建StorageClass
  • 2016年国赛高教杯数学建模A题系泊系统的设计解题全过程文档及程序
  • Python基础学习(3)
  • SpinalHDL之结构(二)
  • rabbitmq整合skywalking并编写自定义插件增强
  • 超详图解 Apache HTTP Server(httpd)安装与验证
  • 设计模式 享元模式(Flyweight Pattern)
  • 『功能项目』QFrameWorkBug修改器界面【65】
  • 数据结构(十四)——HashMap与HashSet(OJ题)