`
gtssgtss
  • 浏览: 17320 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

重构题(2)--通过复制粘贴,获得第一份答案

 
阅读更多
	public <T>List<T> query(SimpleQuery simpleQuery,Pager pager, RowMapper<T> rowMapper){
		String querySQL = simpleQuery.getQuerySQL();
		Object args = simpleQuery.getArgs();
		long count = count(simpleQuery);
		pager.setTotalObjects(count);
		if(count<=pager.getFirstResult()){
			return new ArrayList<T>();
		}
		String pagingQuerySQL = createPagingQuerySQL(querySQL, pager.getFirstResult(), pager.getPageSize());
		if(args == null){
			return jdbcTemplate.query(pagingQuerySQL, rowMapper);
		}else{			
			return jdbcTemplate.query(pagingQuerySQL, rowMapper, args);
		}
	}
	
	public List <Map<String,Object>> query(SimpleQuery simpleQuery,Pager pager){
		String querySQL = simpleQuery.getQuerySQL();
		Object args = simpleQuery.getArgs();
		long count = count(simpleQuery);
		pager.setTotalObjects(count);
		if(count<=pager.getFirstResult()){
			return new ArrayList<Map<String,Object>>();
		}
		String pagingQuerySQL = createPagingQuerySQL(querySQL, pager.getFirstResult(), pager.getPageSize());
		if(args == null){
			return jdbcTemplate.queryForList(pagingQuerySQL);
		}else{			
			return jdbcTemplate.queryForList(pagingQuerySQL, args);
		}
	}


接上回:

在对象村的春天公司里,大家讨论着:
添加这个功能,应该很简单...
恩,只要复制粘贴一下,然后引入RowMapper,很快就完成了这个功能...
但是这样就产生了重复代码...
看来原来的设计是存在问题的,通过这次添加功能,这个问题暴露了出来...
那么,准备开始重构吧...
分享到:
评论

相关推荐

    copylot:[实验性] Web应用程序,用于使用Python进行科学运算。 像ipynb一样,但是2D。 通过复制粘贴进行重构

    [实验] 像ipynb,但2D 通过复制粘贴重构代码:)了解代码该应用程序是使用构建的,该应用程序在状态更改时会为我们更新DOM。 如果您是React的新手,我建议他们在其文档的部分。 该应用程序是用 (JavaScript的类型化...

    eclipse几个快捷键,很好用

    - Ctrl+C和Ctrl+V用于快速复制粘贴代码片段,尤其是在多个文件之间共享相同代码时。 ##### 8. **Ctrl+/:添加/消除//注释** - **功能**:为当前行添加或取消双斜杠注释(//)。 - **应用场景**: - 在调试过程中...

    程序员的中年危机,史上最全的Android面试题集锦,分享PDF高清版.pdf,这是一份不错的文件

    18. 复制粘贴用歌、百度解决错误的最好方法:学习如何搜索解决问题的方法。 19. 不要放弃到最后,不管用什么方法,问题肯定会解决:学习编程,不要放弃,问题总会解决。 20. 休息、休息再休息解决问题的最好方法:...

    新版Android开发教程.rar

    � Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金; Android 的 程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己...

    KODExplorer 芒果云-资源管理器

    则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3" ![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png) ###ver2.61 `...

    西门子s7-200程序到S7-1200程序转换软件

    2. 重新编写:然后,使用TIA Portal创建新的S7-1200项目,并根据S7-200程序的手动分析结果,逐个编写或复制粘贴Ladder Logic或Structured Text到新的项目中。 3. 调整指令:由于S7-1200的指令集比S7-200更丰富,...

    idea常用操作总结大全-附截图

    #### 第一章:基本操作项目 ##### 1.1 创建新项目 - 在 IntelliJ IDEA 中创建新项目时,首先启动软件并选择 "Create New Project"。随后,根据所需的项目类型(如 Java、Spring Boot 等),选择合适的模板并按照...

    IntelliJ IDEA常用快捷

    - `CTRL+UP/DOWN`:跳转到第一行或最后一行 - `ESC` / `SHIFT+ESC`:将光标返回编辑框,关闭无用的窗口 - `F1`:显示帮助(但可能会较慢) 7. **编译设置**: - 可以通过`SETTINGS -&gt; COMPILER -&gt; EXCLUDES`来...

    Eclipse实用快捷键大全

    - `Ctrl + C` / `Ctrl + V`:复制/粘贴 - `Ctrl + X`:剪切 - `Ctrl + Z`:撤销 - `Ctrl + Y`:重做 - `Ctrl + A`:全选 - `Ctrl + D`:删除当前行 - `Ctrl + Shift + D`:复制当前行到下一行 - `Alt + ↓` ...

    JavaEE电商项目8天速成

    - **第一天**: - **任务**: - 了解电商行业的基本概念和发展趋势。 - 对魔力商城项目进行整体规划和需求分析。 - 使用Maven搭建后台工程,整合SSM框架。 - **知识点**: - Maven的基础使用,包括依赖管理、生命...

    Intellij IDEA使用总结

    - **`CTRL+UP/DOWN`**:光标跳转到第一行或最后一行; - **`ESC`**:光标返回编辑框; - **`SHIFT+ESC`**:光标返回编辑框,关闭无用的窗口; - **`F1`**:帮助文档,建议慎用,以免造成界面卡顿; - **`CTRL+...

    最新职高计算机专业考试题.pdf

    - BIOS:基本输入输出系统,是计算机启动时加载的第一段软件程序,负责硬件的初始化工作。 2. 计算机硬件 - S-ATA、SCSI、Serial ATA:这些都是硬盘的数据传输接口类型。S-ATA接口的数据传输速率通常高于并行ATA...

    NodeCanvas 3.1.8.rar

    (全部撤销/重做、放大/缩小、迷你地图、多选、复制、复制/粘贴、JSON 导入/导出、群组、注释等) ● 图形、GameObject 和全局黑板变量,以创建可重复使用和以智能体为中心的参数行为。 ● 具有实例或静态属性和字段...

    eclipse快捷键 各种快捷键在这里都可以找的到

    - `Ctrl + C / Ctrl + V`:复制和粘贴。 - `Ctrl + X / Ctrl + Z`:剪切和撤销。 - `Ctrl + Shift + V`:显示最近使用的剪贴板历史。 - `Ctrl + D`:删除当前行。 - `Ctrl + Shift + F`:格式化代码。 - `Alt ...

    CloneAnalyzer_CN

    更多关于Cut-And-Paste反模式的详细分析可参考[1],而关于重构的建议可参阅[2]。欲了解更多软件质量分析的信息,可以访问http://www.qbench.de。 **术语** - **CodeFragment**:特定文件中连续的代码行,每行都与...

    IntelliJ Idea 常用快捷键列表

    - **Ctrl+Up/Down**:光标中转到第一行或最后一行下。将光标移动到文件顶部或底部。 - **Ctrl+B/Ctrl+Click**:快速打开光标处的类或方法(跳转到定义处)。跳转到类或方法的定义位置。 - **Ctrl+Alt+B**:跳转到...

    关于C++编程的42条建议

    2. **降低出错概率:** 减少了因复制粘贴操作不当而引入错误的可能性。 3. **性能优化:** 当前的编译器足够智能,能够自动优化代码,包括循环展开等优化措施。因此,除非特殊情况或经过性能分析确认需要手动优化的...

    eclipse快截键

    - `F11`:单步执行程序,直到遇到第一个断点。 - `F8`:继续执行程序。 - `Shift + F5`:停止调试会话。 - `Ctrl + Shift + B`:构建项目。 - `Ctrl + D`:删除当前行。 - `Ctrl + F11`:运行程序。 #### 其他高级...

Global site tag (gtag.js) - Google Analytics