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,很快就完成了这个功能...
但是这样就产生了重复代码...
看来原来的设计是存在问题的,通过这次添加功能,这个问题暴露了出来...
那么,准备开始重构吧...
分享到:
相关推荐
[实验] 像ipynb,但2D 通过复制粘贴重构代码:)了解代码该应用程序是使用构建的,该应用程序在状态更改时会为我们更新DOM。 如果您是React的新手,我建议他们在其文档的部分。 该应用程序是用 (JavaScript的类型化...
- Ctrl+C和Ctrl+V用于快速复制粘贴代码片段,尤其是在多个文件之间共享相同代码时。 ##### 8. **Ctrl+/:添加/消除//注释** - **功能**:为当前行添加或取消双斜杠注释(//)。 - **应用场景**: - 在调试过程中...
18. 复制粘贴用歌、百度解决错误的最好方法:学习如何搜索解决问题的方法。 19. 不要放弃到最后,不管用什么方法,问题肯定会解决:学习编程,不要放弃,问题总会解决。 20. 休息、休息再休息解决问题的最好方法:...
� Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金; Android 的 程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己...
则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3" ![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png) ###ver2.61 `...
2. 重新编写:然后,使用TIA Portal创建新的S7-1200项目,并根据S7-200程序的手动分析结果,逐个编写或复制粘贴Ladder Logic或Structured Text到新的项目中。 3. 调整指令:由于S7-1200的指令集比S7-200更丰富,...
#### 第一章:基本操作项目 ##### 1.1 创建新项目 - 在 IntelliJ IDEA 中创建新项目时,首先启动软件并选择 "Create New Project"。随后,根据所需的项目类型(如 Java、Spring Boot 等),选择合适的模板并按照...
- `CTRL+UP/DOWN`:跳转到第一行或最后一行 - `ESC` / `SHIFT+ESC`:将光标返回编辑框,关闭无用的窗口 - `F1`:显示帮助(但可能会较慢) 7. **编译设置**: - 可以通过`SETTINGS -> COMPILER -> EXCLUDES`来...
- `Ctrl + C` / `Ctrl + V`:复制/粘贴 - `Ctrl + X`:剪切 - `Ctrl + Z`:撤销 - `Ctrl + Y`:重做 - `Ctrl + A`:全选 - `Ctrl + D`:删除当前行 - `Ctrl + Shift + D`:复制当前行到下一行 - `Alt + ↓` ...
- **第一天**: - **任务**: - 了解电商行业的基本概念和发展趋势。 - 对魔力商城项目进行整体规划和需求分析。 - 使用Maven搭建后台工程,整合SSM框架。 - **知识点**: - Maven的基础使用,包括依赖管理、生命...
- **`CTRL+UP/DOWN`**:光标跳转到第一行或最后一行; - **`ESC`**:光标返回编辑框; - **`SHIFT+ESC`**:光标返回编辑框,关闭无用的窗口; - **`F1`**:帮助文档,建议慎用,以免造成界面卡顿; - **`CTRL+...
- BIOS:基本输入输出系统,是计算机启动时加载的第一段软件程序,负责硬件的初始化工作。 2. 计算机硬件 - S-ATA、SCSI、Serial ATA:这些都是硬盘的数据传输接口类型。S-ATA接口的数据传输速率通常高于并行ATA...
(全部撤销/重做、放大/缩小、迷你地图、多选、复制、复制/粘贴、JSON 导入/导出、群组、注释等) ● 图形、GameObject 和全局黑板变量,以创建可重复使用和以智能体为中心的参数行为。 ● 具有实例或静态属性和字段...
- `Ctrl + C / Ctrl + V`:复制和粘贴。 - `Ctrl + X / Ctrl + Z`:剪切和撤销。 - `Ctrl + Shift + V`:显示最近使用的剪贴板历史。 - `Ctrl + D`:删除当前行。 - `Ctrl + Shift + F`:格式化代码。 - `Alt ...
更多关于Cut-And-Paste反模式的详细分析可参考[1],而关于重构的建议可参阅[2]。欲了解更多软件质量分析的信息,可以访问http://www.qbench.de。 **术语** - **CodeFragment**:特定文件中连续的代码行,每行都与...
- **Ctrl+Up/Down**:光标中转到第一行或最后一行下。将光标移动到文件顶部或底部。 - **Ctrl+B/Ctrl+Click**:快速打开光标处的类或方法(跳转到定义处)。跳转到类或方法的定义位置。 - **Ctrl+Alt+B**:跳转到...
2. **降低出错概率:** 减少了因复制粘贴操作不当而引入错误的可能性。 3. **性能优化:** 当前的编译器足够智能,能够自动优化代码,包括循环展开等优化措施。因此,除非特殊情况或经过性能分析确认需要手动优化的...
- `F11`:单步执行程序,直到遇到第一个断点。 - `F8`:继续执行程序。 - `Shift + F5`:停止调试会话。 - `Ctrl + Shift + B`:构建项目。 - `Ctrl + D`:删除当前行。 - `Ctrl + F11`:运行程序。 #### 其他高级...