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 中处理游标即可。

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


 


 

猜你喜欢

转载自y60024651.iteye.com/blog/2294292
今日推荐