`
dmcp
  • 浏览: 22637 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

myBatis3执行存储过程

 
阅读更多

使用myBatis3执行存储过程不像iBatis2那样,有procedure这样的标签可以供使用,如下为iBatis2的使用方法:

<procedure id="provCitySplit" parameterMap="provCitySplitParameterMap" resultClass="java.lang.Long">

  {call PKG_SUB_POLICY.PROV_CITY_SPLIT(?,?,?,?)}

</procedure>

parameterMap="provCitySplitParameterMap"的定义如下:

<parameterMap class="map" id="provCitySplitParameterMap">

  <parameter property="subPolicyId" jdbcType="DECIMAL" javaType="java.lang.Long" mode="IN"/>

  <parameter property="cityId" jdbcType="DECIMAL" javaType="java.lang.Long" mode="IN"/>

  <parameter property="fetchNum" jdbcType="DECIMAL" javaType="java.lang.Long" mode="IN"/>

  <parameter property="resultCode" jdbcType="DECIMAL" javaType="java.lang.Long" mode="OUT"/>

</parameterMap>


java调用方法如下:

@Override

public Long callProvCitySplitProcedure(Long subPolicyId, Long cityId,

    Long fetchNum) throws SQLException {

  Map<String, Long> map = new HashMap<String, Long>();

  map.put("subPolicyId", subPolicyId);

  map.put("cityId", cityId);

  map.put("fetchNum", fetchNum);

  SqlMapSession sqlMapSession = sqlMapClient.openSession();

  try {

    sqlMapSession.update("PROCEDURE.provCitySplit", map);

    Long resultCode = map.get("resultCode");

    return resultCode;          

  } catch (SQLException e) {

    throw new SQLException(e);

  } finally {

    if (sqlMapSession.getCurrentConnection() != null) {

      System.out.println("Get CurrentConnection and close...");

      sqlMapSession.getCurrentConnection().close();

    }

    sqlMapSession.close();

  }

}

而mybatis3已经没有procedure这样的标签,只剩下select来操作存储过程,使用方法如下:

<select id="cancelSubPolicy" statementType="CALLABLE">

    {call p_cancel_sub_policy(#{subPolicyId, jdbcType=NUMERIC, mode=IN},

                              #{canceledCount, jdbcType=NUMERIC, mode=OUT})}

</select>

java调用方法如下:

public long cancelSubPolicy(Integer coreDBId, Long subPolicyId) throws SQLException {

    SqlSession sqlSession = null;

    try {

        sqlSession = sessionFactory.openSession();

        final Map<String, Object> param = new HashMap<String, Object>();

        param.put("subPolicyId", subPolicyId);

        long time = System.currentTimeMillis();

        sqlSession.select("com.ailk.dm.odomain.dms.dao.MultiTaskDao.cancelSubPolicy", param, null);

        log.info("cancelSubPolicy elapsed time: " + (System.currentTimeMillis() - time) + "ms");

        BigDecimal canceledCount = (BigDecimal) param.get("canceledCount");

        // return canceled task count;

        return canceledCount.longValue();

    } catch (PersistenceException pe) {

        log.error("cancelSubPolicy failed: subPolicyId=" + subPolicyId, pe);

        throw new SQLException(pe);

    } finally {

        if (null != sqlSession) sqlSession.close();

    }

}
分享到:
评论

相关推荐

    spring mybatis 调用oracle存储过程

    在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...

    Mybatis调用Oracle存储过程的方法图文详解

    主要介绍了Mybatis调用Oracle存储过程的方法介绍,需要的朋友可以参考下

    springmybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

    Mybatis相关代码

    1.mybatis快速入门 2.使用mybatis对表执行CRUD操作 3.优化mybatis配置文件中的配置 4.解决字段名与实体类属性名不相同的冲突 5.实现关联表查询 6.调用存储过程 7.mybatis缓存 8.mybatis 3.x与Spring 4.X整合

    mybatis的具体介绍.doc

    灵活性高:MyBatis支持动态SQL和存储过程,对于需要执行复杂查询的应用场景,提供了强大的动态SQL支持,使得查询条件可以根据需要进行灵活拼装,便于处理多变的查询需求。 性能高效:作为一个轻量级的框架,...

    MyBatis框架简单的知识点总结.zip

    MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...

    MyBatis框架简单的知识点总结.docx

    MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...

    mybatis面试题专项

    答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的...

    40道MyBatis面试题带答案(很全)

    MyBatis是一款优秀的持久层框架,用于支持普通SQL查询、存储过程和高级映射。它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。 MyBatis前身叫iBatis,本是Apache的一个开源项目,2010年由apache ...

    Mybatis框架基础

    MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。 MyBatis、Hibernate 和 JDBC和 Hibernate 相比,MyBatis 封装性低于 Hibernate,但性能优秀...

    Mybatis使用手册.pdf

    mybatis看这一篇就够了,MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...

    SpringBoot项目整合MyBatis连接数据库

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。因为MyBatis可以使用简单的XML或注解来配置和映射原生信息

    Mybatis框架看了就会

    mybatis支持自定义 SQL、存储过程以及高级映射,可以通过sql映射文件实现sql语句的编写,支持动态sql,用条件判断进行查询可以实现sql复用。 2、mybatis优势 通过参数映射方式,可以将参数灵活的配置在SQL语句中的...

    MyBatis学习资料

    MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架 . 官网:http://www.mybatis.org/ 3. 优缺点 (1) 优点 a) 与JDBC比较 减少代码量 Sql与程序代码分离 简单 增强了移植性 b) 与...

    MyBatis_Course:MyBatis 适合初学者学习

    MyBatis_Course MyBatis 适合初学者学习 v0.1 - MyBatis 读取数据 v0.2 - 使用MyBatis对表执行...v0.9 - 调用存储过程 v1.0 - Mybatis一级缓存测试 v1.1 - Mybatis二级缓存测试 使用方法: git checkout v0.1 Happy!

    Java Mybatis框架入门基础教程

    MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射...

    Java Mybatis 框架入门教程

     MyBatis是一款的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本...

    springboot+mybatis+dubbo 本项目是基于微服务架构的班车预约系统.zip

    采用两个版本第一个版本:springboot+mybatis+dubbo+rocketmq+mysql+redis等。第二个版 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自...

    基于springboot+mybatis学生管理系统.zip

    中央处理单元 (CPU):作为计算机的大脑,负责执行指令、进行逻辑运算和数据处理。 内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态...

Global site tag (gtag.js) - Google Analytics