`

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
分享到:
评论

相关推荐

    jdbc调用存储过程,函数,游标

    本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...

    sql server2000 驱动程序

    比如,它可能包含处理T-SQL语言、事务管理、存储过程调用、身份验证等功能的代码。由于SQL Server有自己的特定语法和特性,如游标、事务、触发器等,这个库使得开发者能够充分利用这些特性。 3. msutil.jar:这个...

    Microsoft JDBC Driver 4.0 for SQL Server

    3. **支持高级特性**:支持包括批处理、事务管理、存储过程、XML数据类型、游标、以及SQL Server特定的函数和特性。 4. **安全性**:提供了安全的SSL加密连接,以保护数据传输的安全。 5. **自动发现服务器**:支持...

    都市信息网(Struts2+sql server 2000)

    - **T-SQL**:是SQL Server的扩展,提供丰富的编程功能,如存储过程、触发器、游标等。 - **安全性**:通过角色、权限、审计等功能,确保数据的安全访问。 - **备份与恢复**:支持完整备份、差异备份、日志备份...

    Java连接SQLServer和Oracle数据库.zip

    Java作为一种多平台支持的编程语言,广泛应用于企业级应用开发,而SQLServer和Oracle则是两大主流的商业数据库系统。本资料主要探讨了如何使用Java来连接并操作这两个数据库。 首先,我们来看Java与SQLServer的连接...

    ms sql+mysql+oracle 的 jdbc 驱动

    5. **处理结果集**:对于查询语句,`executeQuery()`返回ResultSet对象,可以遍历获取数据。 6. **关闭资源**:使用完数据库资源后,务必关闭Connection、Statement和ResultSet,以释放系统资源。 除了基础操作,...

    java代替sql limit函数

    如果你对数据库的权限允许,可以创建一个存储过程来处理分页逻辑,然后在Java中调用该存储过程。这可以将分页的计算压力转移到数据库端,但可能导致数据库设计复杂度增加。 3. **RowNumber窗口函数(MySQL 8.0及...

    Java语言SQL接口—JDBC编程技术

    - **CallableStatement**: 用于调用数据库存储过程的接口。 **2. JDBC操作步骤** 1. 加载驱动:`Class.forName("driver_class_name")` 2. 建立连接:`Connection conn = DriverManager.getConnection(url, username...

    ibatis源码

    这些文件通常以XML格式存储,可以定义参数映射、结果映射以及动态SQL等。 2. SQLSession:这是Ibatis的主要工作接口,用于执行SQL语句并获取结果。它提供了增删改查等基本操作,并管理着与数据库的连接。 3. ...

    Java数据库编程宝典

    JDBC提供了一组API,允许程序员执行SQL语句,处理结果集,管理事务,并且可以用于任何遵循JDBC规范的数据库,如MySQL、Oracle、SQL Server等。 1. JDBC基础知识:首先,你需要了解JDBC驱动的分类(类型1至4),以及...

    Java 数据库接口

    学习JDBC的过程中,可以了解批处理、存储过程的调用、以及高级特性如CallableStatement和RowSet。同时,了解JDBC的局限性,比如它不是面向对象的,对于复杂的查询操作可能不够直观,此时可以考虑使用ORM框架,如...

    jdbc.rar

    - `CallableStatement`用于调用存储过程。 4. **ResultSet对象**:当执行查询语句后,结果会返回一个`ResultSet`对象,可以遍历查询结果集。 5. **DatabaseMetaData对象**:提供了关于数据库的一些元数据信息,如...

    2012DBA数据库

    - **存储过程实现分页**: 在Oracle中,通常将分页逻辑封装在存储过程中,并使用动态游标变量来返回数据集。 #### 六、联接操作 6. **联接操作** - **左联接**(`LEFT JOIN`): 返回左表的所有记录以及右表匹配的...

    JDBC操作技术 PDF

    - **CallableStatement**:用于调用存储过程。 - **ResultSet**:执行查询后返回的数据集。 - **DriverManager**:管理数据库驱动,负责建立连接。 - **ResultSetMetaData**:提供关于ResultSet列的信息。 - **...

    常用数据库的链接方式(java)

    在IT行业中,数据库是存储和管理数据的核心工具,而Java作为一种广泛应用的编程语言,与数据库的交互是开发过程中的常见任务。本资源主要探讨的是如何使用Java来连接各种常见的数据库系统,如MySQL、Oracle、SQL ...

    数据库jar包

    - 理解Oracle的特性和功能,比如PL/SQL、游标、存储过程、触发器等。 总结来说,数据库jar包是Java应用程序与数据库交互的关键,正确选择和使用对应数据库的JDBC驱动,能够确保应用程序顺利地进行数据读写和管理。...

    一点关于JDBC的内容

    4. **结果集ResultSet**:执行查询后返回的结果存储在ResultSet对象中,它是一个游标,可以按需向前移动,读取数据。 5. **事务管理**:JDBC支持事务的概念,通过`Connection.setAutoCommit(false)`关闭自动提交,...

    JDBC与数据库连接

    - **ResultSet对象**:存储查询结果的游标,可以按行遍历数据。 **2. JDBC操作步骤** 使用JDBC进行数据库操作通常遵循以下步骤: 1. 加载驱动:通过`Class.forName()`方法加载数据库驱动。 2. 获取连接:使用`...

Global site tag (gtag.js) - Google Analytics