`

mybatis调用sqlserver存储过程结果集以游标输出

阅读更多

最近项目使用了sqlserver做为数据库服务器,在使用mybatis调用存储过程的时候报错,具体如下:



mybatis映射器配置如下:

  后调试发现是由于参数resultList jdbcType=CURSOR配置错误导致,查看源码发现mybatis JdbcType的CURSOR只支持Oracle,如下图所示:



 由于是初次使用MSSQL,写过程的思维还停留在oracle当中,后发现MSSQL返回结果集无需像oracle那样通过游标实现,使用 cursor varying output 的目的,是为了在 MSSQL 中调用过程时,获得一个已打开的游标。

注意:这里是指在MSSQL中处理的游标,并非你的客户端程序从服务器取得的记录集游标。
或者说,JAVA客户端是无法处理 varying output 带出的游标。
其实只要在存储过程中设置一个查询语句,JAVA程序调用这个存储过程后,可以获得一个记录集,在程序中处理记录集,类似于在 MSSQL 中处理游标即可。

 

最后修改映射器配置文件后程序正常执行,具体如下图所示:


 

 


 

  • 大小: 27.7 KB
  • 大小: 32.3 KB
  • 大小: 37.1 KB
  • 大小: 30.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics