从操作数据库谈到Template模式

1.繁琐的数据库操作

不知道大家发现没有,无论什么语言,数据库操作永远是最繁琐的部分

//首先要获取conn
Connection connection=null;
Statement statement=null;
try{
    connection=pool.getConnection();
    statement=connection.createStatement();
    ResultSet rs=statement.executeQuery("select * from xxx");
    while(rs.next()){
        ...;
    }
}catch(SQLException e){
    logger.exception(e);
}finally{
    if(statement!=null){
        try{
            statement.close();
        }catch(SQLException e){
        }
    }
    if(connection!=null){
        try{
            connection.close();
        }catch(SQLException e){
        }
    }

这段代码真正核心部分其实就是对查询出来的ResultSet进行操作而已,但是为什么要有这么多跟业务无关但是又不得不写的代码!我们可以不可以把具体的业务抽象出来,每次只需要写业务代码,而其他声明与异常捕获都统一放到一个函数里面去。

2.Template模式

在实际的代码编写过程中,我们经常会遇到一下很多大部分重复但是少部分又有区别的代码

public Data functionA(){
    Data x;
    流程1 //对变量x进行了一些操作
    中间流程A//再次对变量x进行了一些操作
    流程2//最后对变量x进行了一些操作
    return x;
}

public Data functionB(){
    Data x;
    流程1 //对变量x进行了一些操作
    中间流程B//再次对变量x进行了一些操作
    流程2//最后对变量x进行了一些操作
    return x;
}

上面两个函数大部分流程都是相同的,只有中间流程不同,而且中间流程与前后流程的变量都进行了一些操作。所以我们可以把中间流程单独剥离出来作为一个参数传进去

public Data commonFunction(Consumer<Data> function){
    Data x;
    流程1 //对变量x进行了一些操作
    function.accept(x)//将中间流程作为一个参数传了进来
    流程2//最后对变量x进行了一些操作
    return x;
}

public Data functionA(){
    return commonFunction(x->{
                中间流程A//对变量x进行了一些操作
            });
}

public Data functionB(){
    return commonFunction(x->{
                中间流程B//对变量x进行了一些操作
            });
}

这样我们在写具体的代码的时候只需要关注真的中间流程而无需关注其他的通用的流程。

3. 数据库操作的简化与封装

  1. 我们平常使用数据库都是增删改查四个操作,其中增删改三个操作只需要执行SQL语句,而查操作需要返回Resul
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值