`
leiliang
  • 浏览: 45742 次
社区版块
存档分类
最新评论

call mysql store procedure in ibatis with spring

阅读更多
call mysql store procedure in ibatis with spring

1.sqlmap文件编写

1)无参存储过程
<procedure id="testp">
    {call test}
</procedure>

2)有参存储过程
1)无out参数
<parameterMap class="java.util.HashMap" id="roleMap">
    <parameter property="userID" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
    <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
    <parameter property="sex" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
    <parameter property="icon" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
<procedure id="insertRole" parameterMap="roleMap">
    <![CDATA[
    {call insertRole(?,?,?,?)}
    ]]>
</procedure>

2)有out参数
<parameterMap class="java.util.HashMap" id="userMap_4">
    <parameter property="userName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
    <parameter property="number" jdbcType="INT" javaType="java.lang.Integer" mode="OUT"/>
</parameterMap>
<procedure id="checkUserName" parameterMap="userMap_4">
    {call checkUserName(?,?)}
</procedure>


注意点:
    I.parameterMap中定义的参数顺序与procedure中调用的存储过程的参数顺序相同
    II.parameterMap中定义属性的jdbcType,javaType,mode要仔细
    III.procedure中传参用parameterMap,小心用错parameterClass


2.Java中的调用
1)仅带in参数存储过程调用:
Map p = new HashMap();    
p.put("userID",new Integer(role.getId()));    
p.put("name",role.getName());
p.put("sex", new Integer(role.getSex()));
p.put("icon", new Integer(role.getIcon()));
getSqlMapClientTemplate().queryForObject("insertRole",p);

2)带有out参数存储过程调用:
public int checkUserName(String name){
    HashMap<String,Object> p=new HashMap<String,Object>();
    p.put("userName", name);
    p.put("number", null);
    getSqlMapClientTemplate().insert("checkUserName", p);
    return (Integer)p.get("number");
}

注意:调用带有out参数的存储过程要用insert,如果用queryFor...会卡死在调用处..

3.有参返回结果集存储过程
1).存储过程:
在MySQL 5.0中,游标只能使用在存储过程中.不过,如果你在 SELECT 语句中如果没有打开游标的话,那么结果集会被直接发送给客户端,也可以 SELECT INTO 到变量中
如果你在存储过程或存储函数中执行一条普通的 SELECT 语句,那么结果集会直接返回给客户端.需要使用MySQL 4.1的客户端-服务器协议来支持它,这意味着 - 例如在PHP中,就需要用 mysqli 扩展而非 mysql 扩展才能实现.

create procedure getRoleByUserID(in userID int)
label_proc:begin
	select * from role where user_id=userID; 
end label_proc

2)sqlMap:
<parameterMap class="java.util.HashMap" id="roleMap_1">
    <parameter property="userID" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
</parameterMap> 
<procedure id="getRoleByUserID" parameterMap="roleMap_1" resultClass="role">
    <![CDATA[
    {call getRoleByUserID(?)}
    ]]>
</procedure>

我所犯过的错误:围绕着oracle的做法,在存储过程中设置一个out sys_outcursor参数,然后在parameter中设置一个hashmap results接收这个参数....折腾了几个小时...
这里的关键点就在于,把这个存储过程当一个普通的select元素,设置个resultClass来格式化结果集就行了.

3 java中调用:
调用就像普通select一样调用
Map p = new HashMap();
p.put("userID", userID);
Role role=(Role)getSqlMapClientTemplate().queryForObject("getRoleByUserID",p);
System.out.println("成功:"+role.getId()+"->"+role.getName());

分享到:
评论
1 楼 kodfor 2008-11-24  
嗯,以上问题也折腾我N久

相关推荐

    ibatis与spring整合

    ### ibatis与Spring框架整合详解 #### 一、ibatis简介 ibatis是一个开源的、基于Java的持久层框架,它提供了SQL映射的方式来进行数据库访问。与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单...

    iBatis和Spring整合

    iBatis和Spring整合 iBatis和Spring整合

    ibatis+Spring demo

    内容包里面是源代码,运行该例子的方式就是,使用里面的sql...使用cmd进入该解压包,运行 java -jar *.jar ibatis2spring.jar 就可以了。欲了解代码的详细,请访问作者博客,搜索《ibatis + Spring 多表查询》文章。

    Struts2+iBATIS+Spring整合

    Struts2+iBATIS+Spring整合是Java Web开发中一种常见的技术栈组合,这三种框架协同工作,可以构建出高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,管理前端...

    struts2+ibatis+spring 安例

    Struts2、iBatis和Spring是Java Web开发中非常重要的三个框架,它们共同构建了一个高效、灵活的应用架构。这个实例结合了这三个框架,旨在帮助开发者理解如何将它们整合在一起,提升开发效率。 Struts2作为MVC...

    ibatis_spring源代码

    在IT行业中,`iBatis` 和 `Spring` 是两个非常重要的框架,它们分别专注于数据库访问和应用程序的全面管理。`iBatis` 是一款优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,使得数据库操作更为灵活...

    ibatis与spring的整合

    在整合iBATIS和Spring的过程中,主要目标是利用Spring的IOC(Inversion of Control)容器来管理和协调数据访问层(DAO)以及事务处理,同时利用iBATIS作为SQL映射框架,提供灵活的数据库操作。以下将详细阐述整合的...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 &lt;bean id="sqlMapClient" class="org.spring...

    Spring + Ibatis 与mysql集群集成

    本教程将深入探讨如何将Spring、Ibatis框架与MySQL集群集成,以实现高效、可靠的数据库操作。 首先,让我们了解Spring和Ibatis。Spring是一个全面的Java应用开发框架,它提供了依赖注入、面向切面编程、事务管理等...

    ibatis 2 and spring 例子

    标题 "ibatis 2 and spring 例子" 指向的是一个关于如何集成并使用iBatis 2框架与Spring框架的示例教程。iBatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了ORM(对象关系映射)框架...

    ibatis 与spring3整合

    "Ibatis 与 Spring3 整合"这一主题,涉及到的是两个知名Java框架——Ibatis(一个轻量级的持久层框架)和Spring(一个全面的企业级应用框架)的协同工作。下面我们将深入探讨这一整合过程中的关键知识点。 Ibatis ...

    ibatis+spring+cxf+mysql搭建webservice的客户端

    ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729

    ibatis-spring学习

    【ibatis-spring学习】 在Java Web开发领域,iBatis和Spring是两个非常重要的框架。iBatis是一个优秀的持久层框架,它简化了数据库操作,而Spring则是一个全面的后端开发框架,提供了依赖注入、事务管理等功能。将...

    Ibatis+Spring+struts1框架搭建

    【标题】:Ibatis+Spring+Struts1框架搭建 在Web开发中,Ibatis、Spring和Struts1是三个非常重要的组件,它们分别负责不同的职责。Ibatis是一个优秀的持久层框架,Spring是一个全面的后端应用框架,而Struts1则是一...

    struts1+ibatis+Spring demo

    Struts1、iBatis和Spring是Java Web开发中三个重要的框架,它们分别负责MVC模式中的表现层、数据访问层以及业务层的管理。这个"struts1+ibatis+Spring demo"是一个示例项目,展示了如何将这三个框架集成到一起,实现...

    Spring struts ibatis Mysql 集成

    在IT行业中,集成Spring、Struts和iBatis与MySQL是构建企业级Java Web应用程序的常见选择。这个项目集成了Spring 2.5.5、Struts 2.1.6、iBatis 2.3.4以及MySQL 5.1数据库,使用IntelliJ IDEA 9作为开发环境。下面将...

    ibatis+spring整合

    在Java开发领域,Ibatis和Spring是两个非常重要的框架,它们各自在数据访问和应用上下文管理方面发挥着重要作用。Ibatis是一个轻量级的SQL映射框架,它允许开发者将SQL语句直接写在配置文件中,避免了传统的DAO层...

    iBATIS_Spring_struts_demo.rar_DEMO_Struct spring ibatis_ibatis j

    标题中的“iBATIS_Spring_struts_demo.rar_DEMO_Struct spring ibatis_ibatis j”表明这是一个关于集成iBATIS、Spring和Struts的演示项目。这个DEMO旨在展示如何在Java应用中有效地整合这三个框架,从而实现数据持久...

    ibatis+spring+struts

    在IT行业中,集成框架是构建复杂企业级应用的常用手段,而"Ibatis+Spring+Struts"就是一个经典的Java Web开发组合,也被称作SSM框架。这个框架集合了Struts的MVC设计模式、Spring的依赖注入和事务管理以及Ibatis的...

    spring mvc+ibatis+spring注解

    总之,这个项目展示了如何结合Spring MVC、Ibatis以及Spring注解,构建一个完整的Web应用程序,实现了数据的CRUD操作,以及分页排序查询和用户登录验证等功能,所有这些都基于非XML的配置方式,利用注解提高了开发...

Global site tag (gtag.js) - Google Analytics