mybatis调用oracle存储过程
2015-11-20 16:28
543 查看
有输入与输出参数的存储过程
oracle存储过程部分代码:
create or replace procedure PT_copy_Shipment_One_Data(
oldShipmentId in varchar ,
servprovGid in varchar ,
insertUser in varchar,
resultShipmentId out varchar
)is
newShipmentGid varchar2(50 );
newShipmentXid varchar2(50 );
newShipmentTypeGid varchar2(50 );
begin
--执行的PLSQL体
commit;--提交事物
Exception
When others then
Rollback;
end PT_copy_Shipment_One_Data;
mybatis的Xml配置
注意:虽然有返回值,不需要知道设置返回参数类,详情可看下面java代码例子
<select id= "callCoptShipment" parameterType ="map"
statementType="CALLABLE">
<![CDATA[
{call PT_copy_Shipment_One_Data(
#{oldShipmentId,mode=IN,jdbcType=VARCHAR},
#{servprovGid,mode=IN,jdbcType=VARCHAR},
#{insertUser,mode=IN,jdbcType=VARCHAR},
#{resultShipmentId,mode=OUT,jdbcType=VARCHAR}
)}
]]>
</select >
Dao或者Service代码
Map<String, String> parasMap = new HashMap<String, String>();
parasMap.put("oldShipmentId", para.get( "shipmentId"));
parasMap.put( "servprovGid", para.get("skdw"));//attr12
parasMap.put( "insertUser", Users.getCurrent());
parasMap.put( "resultShipmentId", "" );
//调用存储过程
this.getSqlSessionTemplate().
selectOne("com.otm.app.entity.pojo.ShipmentCost.callCoptShipment",parasMap);
parasMap.put("shipmentId", parasMap.get("resultShipmentId" ));
return parasMap;
如上标红的代码,在mybatis不需要设置返回参数,然后在java当中调用存储过程也不需要接受返回参数,map参数当中会自动有。这是一个奇怪的地方。
交流技术群号:50567913
oracle存储过程部分代码:
create or replace procedure PT_copy_Shipment_One_Data(
oldShipmentId in varchar ,
servprovGid in varchar ,
insertUser in varchar,
resultShipmentId out varchar
)is
newShipmentGid varchar2(50 );
newShipmentXid varchar2(50 );
newShipmentTypeGid varchar2(50 );
begin
--执行的PLSQL体
commit;--提交事物
Exception
When others then
Rollback;
end PT_copy_Shipment_One_Data;
mybatis的Xml配置
注意:虽然有返回值,不需要知道设置返回参数类,详情可看下面java代码例子
<select id= "callCoptShipment" parameterType ="map"
statementType="CALLABLE">
<![CDATA[
{call PT_copy_Shipment_One_Data(
#{oldShipmentId,mode=IN,jdbcType=VARCHAR},
#{servprovGid,mode=IN,jdbcType=VARCHAR},
#{insertUser,mode=IN,jdbcType=VARCHAR},
#{resultShipmentId,mode=OUT,jdbcType=VARCHAR}
)}
]]>
</select >
Dao或者Service代码
Map<String, String> parasMap = new HashMap<String, String>();
parasMap.put("oldShipmentId", para.get( "shipmentId"));
parasMap.put( "servprovGid", para.get("skdw"));//attr12
parasMap.put( "insertUser", Users.getCurrent());
parasMap.put( "resultShipmentId", "" );
//调用存储过程
this.getSqlSessionTemplate().
selectOne("com.otm.app.entity.pojo.ShipmentCost.callCoptShipment",parasMap);
parasMap.put("shipmentId", parasMap.get("resultShipmentId" ));
return parasMap;
如上标红的代码,在mybatis不需要设置返回参数,然后在java当中调用存储过程也不需要接受返回参数,map参数当中会自动有。这是一个奇怪的地方。
交流技术群号:50567913
相关文章推荐
- Oracle (内连接)
- 索引、mySQL与oracle区别
- Oracle用户管理
- 错误信息:"OraOLEDB.Oracle" 返回了消息 "ORA-12154: TNS: 无法解析指定的连接标识符
- oracle中使用group by优化distinct
- Oracle查询性能优化
- Oracle用户锁定
- 【转】JMeter 通过 JDBC 访问 Oracle 和 MySQL
- Oracle查找Web执行SQL
- oracle 数据恢复
- Oracle中的for和while循环
- oracle 四舍五入 取得的数值
- Oracle中生成随机数的函数
- Oracle & PL/SQL(71),大全
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
- Oracle 补丁全集 (Oracle 9i 10g 11g Path)
- 你缺的不是一个“大牛” 而是一个透视宝
- ORACLE 10.2.5垮版本升级11.2.2 for windows 详细文档
- ORACLE 10.2.01升级10.2.05 for windows 详细文档
- Java通过配置文件连接Mysql和Oracle数据库