`
loook123
  • 浏览: 7139 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ibatis调用sql server存储过程

阅读更多
软件开发为了方便一般对数据库的复杂操作都是用存储过程来进行处理
       ibatis 对于调用存储过程来说是很方便
      
CREATE PROCEDURE insertuser
	-- Add the parameters for the stored procedure here
	@uname nchar(20),
    @upassword nchar(20)
AS
BEGIN
	 insert game_user(uname,upassword) values(@uname,@upassword);
END
       

      
	<!-- 传入参数配置 按照存储过程中顺序 -->
	<parameterMap class="java.util.HashMap" id="paramTuser">
		<parameter mode="IN" property="uname" jdbcType="VARCHAR"
			javaType="java.lang.String" />
		<parameter mode="IN" property="upassword" jdbcType="VARCHAR"
			javaType="java.lang.String" />
	</parameterMap>  

     
      <!-- 存储过程调用  设置参数对象和 返回结果对象-->
	<procedure id="insertuser" parameterMap="paramTuser"  resultClass="java.lang.Integer">
		<![CDATA[{call insertuser(?,?)}]]>
	</procedure>
      

     
     使用SqlMapClient的updata方法来调用即可



   另一种配置方式是将返回结果配置在参数中
  
<!-- 传入参数配置 -->
	<parameterMap class="java.util.HashMap" id="paramTuser">
	    <parameter mode="OUT" property="result" jdbcType="NUMERIC"
			javaType="java.lang.Integer" />
		<parameter mode="IN" property="uname" jdbcType="VARCHAR"
			javaType="java.lang.String" />
		<parameter mode="IN" property="upassword" jdbcType="VARCHAR"
			javaType="java.lang.String" />
	</parameterMap>

<!-- 存储过程调用 -->
	<procedure id="insertuser" parameterMap="paramTuser"  resultClass="java.lang.Integer">
		               <![CDATA[{?=call insertuser(?,?)}]]>
	</procedure>
  


   如果是查询的存储过程使用queryForList 调用相关数据即可
   如果使用queryForList 调用的存储过程中存在更新 插入等操作时,这些操作将无效
   也就是说queryForList 调用的存储过程不支持更新插入操作 需要使用update方法
   
   当出现调用的存储过程有更新插入操作 并且需要返回结果的时候 可以使用参数中有返回值的方式来实习,并且使用update方法
  
  
      <parameterMap class="java.util.HashMap" id="createExamMap">       
         <parameter mode="IN" property="userid" jdbcType="NUMERIC" javaType="java.lang.Integer"/>
         <parameter mode="IN" property="templateid" jdbcType="NUMERIC" javaType="java.lang.Integer"/>
         <parameter mode="OUT" property="examid" jdbcType="NUMERIC" javaType="java.lang.Integer"/>
         <parameter mode="OUT" property="examsize" jdbcType="NUMERIC" javaType="java.lang.Integer"/>
    </parameterMap>
     



     <procedure  id="creatExam" parameterMap="createExamMap"  >
	       <![CDATA[{call dtt_Exam_Create(?,?,?,?)}]]>
     </procedure >


           Map param=new HashMap(); 
		param.put("userid", (int)userid);
		param.put("templateid", id);
		param.put("examid", null);
		param.put("examsize", null);
		try{
			sqlmapclient.update("creatExam", param);
			System.out.println((Integer)param.get("examid"));
			System.out.println((Integer)param.get("examsize"));
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
   

分享到:
评论
3 楼 loook123 2011-12-14  
zhudp.cn 写道
有个合作单位,开放了sql server写的存储过程,我们使用ibatis去调用,而有个存储过程就是里面有Insert 存储过程最终是使用select语句返回的,我们只能使用queryForList,执行是没问题,但就是没数据插入(应该是事务没提交)。

对方不肯修改这个过程,不知有没有其它什么办法?

   要么就放弃ibatis  如果只是单独的调用几个对方数据库的存储过程 可以写个jdbc直接连接
2 楼 zhudp.cn 2011-12-09  
有个合作单位,开放了sql server写的存储过程,我们使用ibatis去调用,而有个存储过程就是里面有Insert 存储过程最终是使用select语句返回的,我们只能使用queryForList,执行是没问题,但就是没数据插入(应该是事务没提交)。

对方不肯修改这个过程,不知有没有其它什么办法?
1 楼 javaAlpha 2010-03-08  

相关推荐

    IBATIS调用存储过程

    本文将详细探讨如何使用iBATIS调用Oracle存储过程,并处理返回的Cursor结果集。 首先,理解iBATIS调用存储过程的基本原理。iBATIS允许开发者在映射文件中定义存储过程调用,通过`&lt;procedure&gt;`标签来实现。在这个...

    webwork+ibatis+sqlserver2000

    【组合应用】:在"webwork+ibatis+sqlserver2000"的组合中,WebWork负责处理HTTP请求并调用业务逻辑,iBATIS则作为中间层,将业务对象与SQL Server 2000数据库进行交互。这种架构有助于提高开发效率,因为它将关注点...

    ibatis sqlserver代码自动生成

    同时,SQLServer提供的存储过程和函数也可以通过Ibatis调用,提升数据库操作性能。 总的来说,通过理解Ibatis和SQLServer的结合,以及掌握代码自动生成的工具和方法,开发者可以大大提高工作效率,减少重复劳动,更...

    excel数据导入到sqlserver2005

    这个过程涉及到多个技术组件,包括Java的JXL库、iBatis持久层框架、SQL Server存储过程以及Struts MVC框架。下面我们将详细探讨这些知识点。 1. **JXL库**:JXL是Java中用于读写Excel文件的一个流行库。它允许...

    IBatis中的存储过程应用实例

    在本实例中,我们将探讨如何在IBatis中使用存储过程,特别是针对SQL Server数据库。 首先,我们需要创建一个存储过程。在本例中,我们有一个名为`P_UpdateUserName`的存储过程,它接受两个输入参数`@UserName`和`@...

    ibatis与存储过程(带输出参数的应用)

    在实际项目中,使用Ibatis调用存储过程时,还应注意以下几点: 1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java...

    ibatis +sql2005 一个小项目

    4. **接口绑定**:在Java代码中,我们可以创建一个服务接口,然后通过iBATIS的`@Select`, `@Insert`, `@Update`, `@Delete`等注解或在XML中定义的方法与SQL映射文件中的SQL对应,实现接口方法调用SQL的执行。...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    在本文中,我们将探讨如何在Mybatis框架中调用PostgreSQL的存储过程,特别是处理 PostgreSQL 的数组类型作为存储过程的输入参数。Mybatis是一个流行的Java持久层框架,它允许开发者编写SQL语句,并与Java对象进行...

    ibatis +mssql 执行增删改查 +存储过程

    在IT行业中,数据库操作是应用程序开发的关键环节,而Ibatis作为一个优秀的持久层框架,与Microsoft SQL Server(MSSQL)数据库结合,可以高效地实现数据的增、删、改、查(CRUD)操作,并且支持存储过程的调用。...

    ibatis源码

    在源码中,iBatis通过JDBC驱动与数据库交互,因此,理解SQL Server的数据类型、事务管理和存储过程对于使用iBatis至关重要。例如,你可以看到iBatis如何通过ParameterHandler和ResultSetHandler处理SQL Server的参数...

    struts2 存储过程

    在MySQL、Oracle、SQL Server等数据库中编写存储过程。例如,一个简单的存储过程可能是用于增删改查操作的。 3. **数据访问层(DAO)**: 在Struts2中,通常会创建一个DAO(数据访问对象)类来处理与数据库的交互...

    struts2 和 spring +ibatis+sql2005

    总结来说,这个例子展示了如何使用Struts2作为前端控制器,Spring进行依赖管理和事务控制,iBatis处理数据库操作,SQL Server 2005存储数据,而Tomcat作为服务器环境,共同构建一个完整的Web应用系统。这个系统能够...

    iBatis学习总结

    此外,iBatis支持存储过程的调用,只需在XML配置文件中定义相应的SQL映射,即可轻松执行存储过程。 在实际开发中,iBatis的映射文件和Java对象之间的映射关系是关键。我们可以通过`@Select`、`@Insert`、`@Update`...

    08_ibatis教程_sql主键生成方式.rar

    Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在主键生成方面,Ibatis提供了多种策略来适应不同的数据库系统和业务需求。 1. **手工设置主键(Manual...

    ibatisnet連接sql server 2008連接方法

    IbatisNet还支持存储过程的调用,动态SQL,事务管理等高级功能。在实际开发中,你可以根据需求进行选择和配置,实现高效、灵活的数据访问。 综上所述,IbatisNet连接SQL Server 2008的过程包括配置SqlMapConfig.xml...

    iBatis入门Helloworld

    iBatis,现已被更名为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。本教程将引导你通过一个简单的"Hello, World!"项目了解iBatis(MyBatis)的基本用法。解压提供的"ibatistest"压缩包...

    asp.net MVC和IBatis.net整合demo数据库部分

    数据库部分涉及了两个文件:`UserMemoDb_log.ldf`和`UserMemoDb.mdf`,这是SQL Server的本地数据库文件。`.mdf`文件是主数据库文件,存储所有的数据库对象,如表、索引、视图等;`.ldf`文件则记录了所有事务日志,...

    Ibatis实例,手把手交你入门

    本文将引导你从零开始,逐步了解并掌握Ibatis的基本用法,包括配置环境、创建数据表、编写Mapper XML文件、映射SQL语句以及在Java代码中调用。 首先,你需要准备以下环境: 1. **Java**:作为基础开发语言,确保你...

    IBatis.DataAccess.

    映射文件内可以包含多个SQL语句,每个语句对应一个ID,Java代码通过这个ID调用SQL。 5. **数据访问层(DAO)设计** 使用IBatis时,通常会创建一个数据访问层(DAO),在DAO中定义方法,这些方法对应于SQL映射文件...

Global site tag (gtag.js) - Google Analytics