首页 > 编程语言 >重构代码好方法之函数式编程

重构代码好方法之函数式编程

时间:2023-07-17 10:47:27浏览次数:30  
标签:重构 函数 代码 编程 param session params mappperId mapperId

在日常编码中,总会出现不同功能有相似之处,比如Session的连接与关闭啊,等等等等
为了整理代码以获取眼睛的纯净,可以使用函数式编码
步骤:
重要的事说一遍
第一步:定义函数式接口

第二步:定义模板方法

第三步:传递lambda表达式

  1. 创建函数式接口
@FunctionalInterface
public interface DbOperation<R> {
    /**
     * 通用操作数据库接口
     * @param session 数据库连接session
     * @param mapperId 关联mapper文件id操作
     * @param params 操作参数
     * @return 返回值,R泛型
     */
    R operate(SqlSession session, String mapperId, Object params);
}
  1. 定义模板方法
    以定义的函数式接口DbOperation为例
public class CommonDao<R> {
    
    public R proccess(DbOperation<R> dbOperation, String mappperId, Object params) {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession session = null;
        try {
            session = sqlSessionFactory.openSession();
            // 核心操作
            return dbOperation.operate(session, mappperId, params);
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
  }
  1. 使用Lambda表达式连接
// 使用lambda传递具体的行为
Student studentObj = commonDao.proccess(
        (session, mappperId, params) -> session.selectOne(mappperId, params),
        mapperId, studentNo);

标签:重构,函数,代码,编程,param,session,params,mappperId,mapperId
From: https://www.cnblogs.com/haipali/p/17559321.html

相关文章

  • JFreeChart教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,applets,servlets以及JSP等使用所设计。JFreeChart可生成饼图(piecharts)、柱状图(barcharts)、散点图(scatterplots)、时序图(timeseries)、甘特图(Ganttcharts)等等多种图表,并......
  • 代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树
     343.整数拆分要求:将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的思路:DP数组:dp[n]N的时候,它的乘机最大值注意:不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的i*(n-i)代码:1//要求:将N拆分成K......
  • net core-socket编程
    基本概念:TCP和UDP的区别具体区别如下:1)TCP是面向连接的传输。UDP是无连接的传输2)TCP有流量控制、拥塞控制,检验数据数据按序到达,而UDP则相反。3)TCP的路由选择只发生在建立连接的时候,而UDP的每个报文都要进行路由选择4)TCP是可靠性传输,他的可靠性是由超时重发机制实......
  • WORD中输入代码并保持对齐的方法
    取消这个勾减少行距......
  • springboot或spring中使用编程式事务和声明式事务
    转载:https://developer.aliyun.com/article/789471https://www.bilibili.com/video/BV1q14y1m7B6/?spm_id_from=333.788.recommend_more_video.1&vd_source=46d50b5d646b50dcb2a208d3946b1598事务失效场景......
  • 面向对象编程(Object-Oriented Programming,OOP)
    面向对象编程(Object-OrientedProgramming,OOP)是一种编程思维方式和编码架构,是一种 对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。什么是对象:对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,一台电脑,一直钢笔,一个人,一辆轿车等等,都可......
  • Eolink Apikit,0 代码可拖拽的自动化测试神器
    大家好,我是哪吒。传统的自动化测试方法需要编写大量的代码和脚本,对于非开发人员来说具有一定门槛,本文将以EolinkApikit为例,探讨图形化操作、可拖拽的自动化测试工作流,如何快速构建复杂的测试流程。一、从测试到可拖拽的自动化测试传统的测试需要测试人员逐步执行测试用例,手动输......
  • A014 《太阳系的秘密》编程 源码
    一、课程介绍在本节课中,将会了解太阳系的基本情况,绘制出一个太阳系。在这个过程中,理解for循环结合列表的使用方法,掌握使用random.randint(a,b)产生随机整数的方法。二、知识重难点解析利用列表实现for循环将for循环后边的range()替换成列表后,for循环会按顺序依次提取列......
  • python编程-核心知识
                  ......
  • 【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块2
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......