使用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数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
主要介绍了Mybatis调用Oracle存储过程的方法介绍,需要的朋友可以参考下
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...
1.mybatis快速入门 2.使用mybatis对表执行CRUD操作 3.优化mybatis配置文件中的配置 4.解决字段名与实体类属性名不相同的冲突 5.实现关联表查询 6.调用存储过程 7.mybatis缓存 8.mybatis 3.x与Spring 4.X整合
灵活性高:MyBatis支持动态SQL和存储过程,对于需要执行复杂查询的应用场景,提供了强大的动态SQL支持,使得查询条件可以根据需要进行灵活拼装,便于处理多变的查询需求。 性能高效:作为一个轻量级的框架,...
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...
答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的...
MyBatis是一款优秀的持久层框架,用于支持普通SQL查询、存储过程和高级映射。它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。 MyBatis前身叫iBatis,本是Apache的一个开源项目,2010年由apache ...
MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。 MyBatis、Hibernate 和 JDBC和 Hibernate 相比,MyBatis 封装性低于 Hibernate,但性能优秀...
mybatis看这一篇就够了,MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。因为MyBatis可以使用简单的XML或注解来配置和映射原生信息
mybatis支持自定义 SQL、存储过程以及高级映射,可以通过sql映射文件实现sql语句的编写,支持动态sql,用条件判断进行查询可以实现sql复用。 2、mybatis优势 通过参数映射方式,可以将参数灵活的配置在SQL语句中的...
MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架 . 官网:http://www.mybatis.org/ 3. 优缺点 (1) 优点 a) 与JDBC比较 减少代码量 Sql与程序代码分离 简单 增强了移植性 b) 与...
MyBatis_Course MyBatis 适合初学者学习 v0.1 - MyBatis 读取数据 v0.2 - 使用MyBatis对表执行...v0.9 - 调用存储过程 v1.0 - Mybatis一级缓存测试 v1.1 - Mybatis二级缓存测试 使用方法: git checkout v0.1 Happy!
MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射...
MyBatis是一款的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本...
采用两个版本第一个版本:springboot+mybatis+dubbo+rocketmq+mysql+redis等。第二个版 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自...
中央处理单元 (CPU):作为计算机的大脑,负责执行指令、进行逻辑运算和数据处理。 内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态...