最近项目使用了sqlserver做为数据库服务器,在使用mybatis调用存储过程的时候报错,具体如下:
mybatis映射器配置如下:
后调试发现是由于参数resultList jdbcType=CURSOR配置错误导致,查看源码发现mybatis JdbcType的CURSOR只支持Oracle,如下图所示:
由于是初次使用MSSQL,写过程的思维还停留在oracle当中,后发现MSSQL返回结果集无需像oracle那样通过游标实现,使用 cursor varying output 的目的,是为了在 MSSQL 中调用过程时,获得一个已打开的游标。
注意:这里是指在MSSQL中处理的游标,并非你的客户端程序从服务器取得的记录集游标。
或者说,JAVA客户端是无法处理 varying output 带出的游标。
其实只要在存储过程中设置一个查询语句,JAVA程序调用这个存储过程后,可以获得一个记录集,在程序中处理记录集,类似于在 MSSQL 中处理游标即可。
最后修改映射器配置文件后程序正常执行,具体如下图所示:
相关推荐
本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...
比如,它可能包含处理T-SQL语言、事务管理、存储过程调用、身份验证等功能的代码。由于SQL Server有自己的特定语法和特性,如游标、事务、触发器等,这个库使得开发者能够充分利用这些特性。 3. msutil.jar:这个...
- **T-SQL**:是SQL Server的扩展,提供丰富的编程功能,如存储过程、触发器、游标等。 - **安全性**:通过角色、权限、审计等功能,确保数据的安全访问。 - **备份与恢复**:支持完整备份、差异备份、日志备份...
3. **支持高级特性**:支持包括批处理、事务管理、存储过程、XML数据类型、游标、以及SQL Server特定的函数和特性。 4. **安全性**:提供了安全的SSL加密连接,以保护数据传输的安全。 5. **自动发现服务器**:支持...
Java作为一种多平台支持的编程语言,广泛应用于企业级应用开发,而SQLServer和Oracle则是两大主流的商业数据库系统。本资料主要探讨了如何使用Java来连接并操作这两个数据库。 首先,我们来看Java与SQLServer的连接...
5. **处理结果集**:对于查询语句,`executeQuery()`返回ResultSet对象,可以遍历获取数据。 6. **关闭资源**:使用完数据库资源后,务必关闭Connection、Statement和ResultSet,以释放系统资源。 除了基础操作,...
如果你对数据库的权限允许,可以创建一个存储过程来处理分页逻辑,然后在Java中调用该存储过程。这可以将分页的计算压力转移到数据库端,但可能导致数据库设计复杂度增加。 3. **RowNumber窗口函数(MySQL 8.0及...
- **CallableStatement**: 用于调用数据库存储过程的接口。 **2. JDBC操作步骤** 1. 加载驱动:`Class.forName("driver_class_name")` 2. 建立连接:`Connection conn = DriverManager.getConnection(url, username...
这些文件通常以XML格式存储,可以定义参数映射、结果映射以及动态SQL等。 2. SQLSession:这是Ibatis的主要工作接口,用于执行SQL语句并获取结果。它提供了增删改查等基本操作,并管理着与数据库的连接。 3. ...
JDBC提供了一组API,允许程序员执行SQL语句,处理结果集,管理事务,并且可以用于任何遵循JDBC规范的数据库,如MySQL、Oracle、SQL Server等。 1. JDBC基础知识:首先,你需要了解JDBC驱动的分类(类型1至4),以及...
学习JDBC的过程中,可以了解批处理、存储过程的调用、以及高级特性如CallableStatement和RowSet。同时,了解JDBC的局限性,比如它不是面向对象的,对于复杂的查询操作可能不够直观,此时可以考虑使用ORM框架,如...
- `CallableStatement`用于调用存储过程。 4. **ResultSet对象**:当执行查询语句后,结果会返回一个`ResultSet`对象,可以遍历查询结果集。 5. **DatabaseMetaData对象**:提供了关于数据库的一些元数据信息,如...
- **存储过程实现分页**: 在Oracle中,通常将分页逻辑封装在存储过程中,并使用动态游标变量来返回数据集。 #### 六、联接操作 6. **联接操作** - **左联接**(`LEFT JOIN`): 返回左表的所有记录以及右表匹配的...
- **CallableStatement**:用于调用存储过程。 - **ResultSet**:执行查询后返回的数据集。 - **DriverManager**:管理数据库驱动,负责建立连接。 - **ResultSetMetaData**:提供关于ResultSet列的信息。 - **...
在IT行业中,数据库是存储和管理数据的核心工具,而Java作为一种广泛应用的编程语言,与数据库的交互是开发过程中的常见任务。本资源主要探讨的是如何使用Java来连接各种常见的数据库系统,如MySQL、Oracle、SQL ...
- 理解Oracle的特性和功能,比如PL/SQL、游标、存储过程、触发器等。 总结来说,数据库jar包是Java应用程序与数据库交互的关键,正确选择和使用对应数据库的JDBC驱动,能够确保应用程序顺利地进行数据读写和管理。...
4. **结果集ResultSet**:执行查询后返回的结果存储在ResultSet对象中,它是一个游标,可以按需向前移动,读取数据。 5. **事务管理**:JDBC支持事务的概念,通过`Connection.setAutoCommit(false)`关闭自动提交,...
- **ResultSet对象**:存储查询结果的游标,可以按行遍历数据。 **2. JDBC操作步骤** 使用JDBC进行数据库操作通常遵循以下步骤: 1. 加载驱动:通过`Class.forName()`方法加载数据库驱动。 2. 获取连接:使用`...