Mybatis调用Oracle中的存储过程和function

简介:
一、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;

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


目录
相关文章
|
18天前
|
存储 SQL Oracle
Oracle系列十五:存储过程
Oracle系列十五:存储过程
|
18天前
|
SQL 存储 Oracle
一篇文章带你学会 Oracle 存储过程的基本介绍和高阶用法(上)
一篇文章带你学会 Oracle 存储过程的基本介绍和高阶用法
|
18天前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
45 0
|
18天前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
100 0
|
18天前
|
SQL 存储 Oracle
一篇文章带你学会 Oracle 存储过程的基本介绍和高阶用法(下)
一篇文章带你学会 Oracle 存储过程的基本介绍和高阶用法
|
18天前
|
存储 SQL Oracle
Oracle存储过程与自定义函数的调用:异同与实战场景
【4月更文挑战第19天】Oracle的存储过程与自定义函数各有特色,存储过程用于封装复杂SQL操作,常在批量处理和数据维护中使用,通过CALL或EXECUTE调用;而自定义函数则用于简单计算和查询,返回单一值,可直接在SQL语句中调用。了解两者异同,如返回值方式、调用方式和应用场景,能提升数据库管理效率。实战场景包括:使用存储过程定期清理过期数据,用自定义函数在查询中动态计算字段值。
|
18天前
|
存储 SQL Oracle
Oracle存储过程:数据王国的魔法师
【4月更文挑战第19天】Oracle存储过程是封装复杂SQL操作的魔法工具,存储在数据库中以便重复调用。它们提供高效执行和安全,类似于预编译的程序。创建存储过程涉及定义名称和参数,如示例所示,创建一个根据员工ID获取姓名和薪资的`get_employee_info`过程。调用存储过程可提高代码可读性和性能,使数据库管理更为便捷。
|
18天前
|
Oracle Java 关系型数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
|
18天前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
40 0
|
存储 Oracle 关系型数据库
调用Oracle存储过程并获取out参数值
原文: http://tech.it168.com/oldarticle/2006-04-02/200604021512359.shtml http://www.cnblogs.com/m-cnblogs/archive/2012/02/23/2364906.
1212 0

推荐镜像

更多