最近很少发博客,先是去了***公司呆了几年,完全不能上外网,后来又出来了,能上外网了,但项目太忙一直在打码,用的语言也从C#换成了JAVA。

好在两者比较相似,转起来还算方便,近日在操作sqlserver数据库的时候发现C#要想获取多个结果集直接用DataSet里面装DataTable就可以了,JAVA这

边轮子非常多,但要做这种需求却不如C#方便。

目前使用JdbcTemplate操作数据库,终于找到了一个好的方案,可以实现获取多结果集,这要感谢 https://weiku.co/article/177/ 博主分享。

以下为demo


/***
* 获取多结果集
* @return
*/
public List<List<Map<String, Object>>> getMultiResult() { String sql = "select 1 select 2 select 3"; List<List<Map<String, Object>>> result = jdbcTemplate.execute(sql, (CallableStatementCallback<List<List<Map<String, Object>>>>) cs -> {
List<List<Map<String, Object>>> list = new ArrayList<>();
boolean execute = cs.execute(); while (execute) {
ResultSet resultSet = cs.getResultSet();
List<Map<String, Object>> subList = new ArrayList<>();
while (resultSet.next()) {
ResultSetMetaData meta = resultSet.getMetaData();
int colcount = meta.getColumnCount();
Map<String, Object> map = new HashMap<>();
for (int i = 1; i <= colcount; i++) {
String name = meta.getColumnLabel(i);
map.put(name, resultSet.getObject(i));
}
subList.add(map);
}
list.add(subList);
execute = cs.getMoreResults();
}
return list;
});
return result;
}
 

最主要的是要用回调对象来做处理,java的泛型由于技术选型跟C#不一样,所以很多时候并不如C# 方便,但好在编译器基本能处理这些。

(CallableStatementCallback<List<List<Map<String, Object>>>>) cs -> { 这行代码非常关键,如果不支持lambda表达式,可以实现该接口,传入具体的实现类。

最新文章

  1. c 小工具的使用
  2. Bundle包的制作与使用
  3. springmvc 文件上传实现(不是服务器的)
  4. [Jquery] js验证手机号
  5. 实例:jQuery实现标签切换
  6. CreateThread、_beginthreadex和AfxBeginThread 的区别
  7. UVA 10892 LCM Cardinality(数论 质因数分解)
  8. Java类锁和对象锁实践(good)
  9. java日期详解
  10. 尚硅谷springboot学习36-自定义starter
  11. Retrofit2 完全解析 探索与okhttp之间的关系
  12. linux软件管理之概述
  13. 解决Linux安装 VMware tools 工具的方法
  14. Gym.102059: 2018-2019 XIX Open Cup, Grand Prix of Korea(寒假gym自训第一场)
  15. MPEG-1视屏压缩标准
  16. sessionStorage &amp; string typeof
  17. Android开发——1轻松战胜开发环境
  18. python opencv3 图像与原始字节转换
  19. Java快速入门-05-数组循环条件 实例《延禧攻略》
  20. MapPartition和Map的区别

热门文章

  1. Mrchen测试人生
  2. linux 自定义函数
  3. 【JavaScript】初识js
  4. lower_bound( )和upper_bound( )的常见用法
  5. poj2152 Fire(树形DP)
  6. Windows 下部署 hadoop spark环境
  7. [转帖]Dockerfile 中 ENTRYPOINT 与 CMD 的区别
  8. 同一台服务器请求easyswoole的一个websocket接口报错
  9. 【openpyxl】 关于 单元格背景色 的疑惑
  10. X86逆向10:学会使用硬件断点