当前位置: 首页 > 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/a/316375.html

相关文章:

  • Linux screen和cscope工具使用总结
  • 多进程/线程并发服务器
  • docker构建jdk11
  • 响应式网页设计--html
  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战
  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • 【高效且应用广泛的排序 —— 快速排序算法】
  • 如何让程序等待输入
  • 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 的基本使用(十)