用递归解决连续更换信息找到最新信息的问题

来源:互联网 发布:nginx修改403页面 编辑:程序博客网 时间:2024/04/29 20:15

工作中遇到连续更换电话或者账户的问题,需要通过其中任意一个来找到最后一次更新结果。

因为是连续更新,在旧信息和新信息字段内都有记录,所以,用了递归来解决这个问题。最近比较喜欢用递归,感觉比循环用起来漂亮。

/** * @param * 动态查询,如果介质变更,根据旧的介质号,查询新介质号;如果电话变更,则根据旧电话查询新电话 * oldinfo:原有信息,newCol:新信息字段;checkSql:检查的sql
* */private String infoChange(String oldInfo,String newCol,String checkSql ){//用newList接收通过旧信息查询出来的新信息List<Map<String, Object>> newList  = JdbcSupportDAO.getJdbcTemplate().queryForList(checkSql);if(newList.size()>0){String newInfo = "";try {//只有一条返回结果时,获取新的信息newInfo = (String) newList.get(0).get(newCol);} catch (Exception e) {logger.error("信息更换查询有误,请核对信息为:"+oldInfo+"的更换记录。");}finally{//递归调用该方法,将查询到的新信息返回return infoChange(newInfo,newCol,checkSql);}}else{return oldInfo;}}

SQL作为参数传入,调用时候增强了灵活性。简化一下大概是这个样子(伪代码)。

private String getLastInfo(String oldInfo){//通过旧信息查询新信息的方法Strng newInfo = getNewInfo(oldInfo);if(oldInfo!=newInfo){return  getLastInfo(newInfo);}}else{return newInfo;}}


1 0