一、Mybatis调用存储过程

1 在数据库中创建以下的存储过程
create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is
begin
  p_result := 'hello,' || p_user_name;
end;
//------------------------------------------

在mysql数据库中创建存储过程

create procedure pro_name([in] p_user_name varchar(10),[in] p_result varchar(10))

begin

p_result := 'hello,' || p_user_name;

end

//注意声明参数的in/out/in out 的位置以及参数类型的长度在mysql中需要声明

2 编写SQL映射文件mapper.xml
statementType里的CALLABLE是标注此sql为存储过程。
parameterType是标注要传的参数,看了一些资料不写parameterType的话默认传map。还是加上比较清晰
<select id="proHello" parameterType="java.util.map" statementType="CALLABLE">
{call pro_hello(#{uname,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}
</select>

3 编写JAVA代码调用存储过程
public class ProcedureTest { 
         public static void main(String[] args) throws IOException {
            String resource = "mybatis.cfg.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
            SqlSession session = ssf.openSession();
            try {
                 Map<String, String> param = new HashMap<String, String>();
                 param.put("uname", "zhangsan");
                 param.put("result", "");
                 String returnValue = (String) session.selectOne("User.proHello", param);
                 System.out.println("message=" + param.get("uname"));
                 System.out.println("result=" + param.get("result"));
                 System.out.println("returnValue=" + returnValue); 
           } catch (Exception e) {
                e.printStackTrace();
           } finally {
              session.close();
          }
       }
}

二、Mybatis调用function

function带有返回值,假设一个oracle函数增加学生后返回成功与否的字符串
<select id="isMember" statementType="CALLABLE" parameterType="cn.StudentDto">  
{#{result,mode=OUT,jdbvType=VARCHAR} = call 
addStudent(#{num,mode=IN,jdbcType=DECIMAL},#{name,mode=IN,jdbcType=VARCHAR},#{rollInYear,mode=IN,jdbcType=Date},#{age,mode=OUT,jdbcType=INTEGER})}  
</select>

StudentDTO除了上述出现的学生信息字段外还需要String类型的result字段。

原帖地址:

http://chenjc-it.iteye.com/blog/1443432

http://shen84121062.iteye.com/blog/1213857

最新文章

  1. it转行了
  2. 孙鑫MFC学习笔记:15多线程
  3. javascript刷新父页面的内容
  4. LayoutTransition实现显示、隐藏动画
  5. 在web.config里面添加配置信息
  6. Spring笔记——Spring框架简介和初次框架配置
  7. Android 动画 6问6答
  8. android微信简单界面
  9. js解析器(重要!)
  10. Day4----------用户、群组、权限
  11. &lt;自动化测试方案_9&gt;第九章、持续集成平台搭建
  12. 了不起的WebRTC:生态日趋完善,或将实时音视频技术白菜化
  13. selenium 安装 以及相关环境
  14. ZooKeeper注册中心安装详细步骤(单节点)
  15. 5.Python文件操作之增删改查
  16. Cobalt Strike 学习
  17. python学习之老男孩python全栈第九期_第二周学习总结
  18. SpringCloud-初识微服务(一)
  19. 命令行执行Django脚本
  20. django后台导入excel文件

热门文章

  1. 简单递归____Fibonacci数列
  2. springboot基于注解动态配置多数据源以及多数据源的事务统一
  3. 转帖 Java生成和操作Excel文件
  4. 生成token
  5. webpack第一节(4)
  6. malloc,free实验
  7. fedora下手动编译安装vim
  8. sql 基础语法 alter用法和视图,透视
  9. tcp和udp得区别
  10. echarts 柱状图 X(Y)轴数据过多时,滑动以及内置缩放的问题