数据库部分:
--建表
create table test_1(id varchar2(20),name varchar2(20));
--建存储过程
create or replace procedure proc_oracle(businessCode in varchar,name in varchar, str out varchar)
as
begin
insert into test_1(id,name) values(businessCode,name) returning id into str;
end;
--调用存储过程例子
declare
str varchar2(200);
begin
proc_oracle('a','张三',str);
dbms_output.put_line('------'||str);
end;
--查询
select * from test_1;
程序部分:
1.CurdService下面增加两个方法:
/**
* 调用存储过程
* @param map
*/
@Transactional(readOnly = false)
public Map proc(Map map) {
dao.proc(map);
return map;
}
/**
* 调用存储过程
* @param entity
*/
@Transactional(readOnly = false)
public T proc1(T entity) {
dao.proc1(entity);
return entity;
}
2.CurdDao增加
/**
* 调用存储过程
* @param map
* @return
*/
public void proc(Map map);
/**
* 调用存储过程
* @param entity
* @return
*/
public void proc1(T entity);
3.根据代码生成器对应模块下的**Dao.xml(本例子EhrLogDao.xml)中增加调用存储过程代码
<!--proc存储过程-->
<update id="proc" statementType="CALLABLE" parameterType="java.util.Map">
<![CDATA[
{call proc_oracle(#{businessCode,mode=IN,jdbcType=VARCHAR},#{businessName,mode=IN,jdbcType=VARCHAR},#{cardno,mode=OUT,jdbcType=VARCHAR})}
]]>
</update>
<!--proc存储过程-->
<update id="proc1" statementType="CALLABLE" parameterType="EhrLog">
<![CDATA[
{call proc_oracle(#{businessCode,mode=IN,jdbcType=VARCHAR},#{businessName,mode=IN,jdbcType=VARCHAR},#{cardno,mode=OUT,jdbcType=VARCHAR})}
]]>
</update>
4.对应模块下**Service调用(本例子EhrLogService.java)
/**
* 测试存储过程调用
* @param ehrLog
*/
@Transactional(readOnly = false)
public void testProc(EhrLog ehrLog) {
Map map = new HashMap();
map.put("businessName","张三");
map.put("businessCode","1");
map = super.proc(map);
System.out.println("------------"+map.get("cardno").toString());
ehrLog.setBusinessCode("2");
ehrLog.setBusinessName("李四");
ehrLog = super.proc1(ehrLog);
System.out.println("------------"+ehrLog.getCardno());
}
5.对应模块下**Controller(本例子EhrLogController.java)调用,增加调用方法
/**
* 测试存储过程
* @param request
* @param response
* @param model
* @return
*/
@RequestMapping(value = {"testProc", ""})
public void testProc(HttpServletRequest request, HttpServletResponse response, Model model) {
ehrLogService.testProc(new EhrLog());
}
启动程序,登录,输入地址调用http://ip:port/console/a/ehr/log/ehrLog/testProc,观察tomcat控制台输出及数据库表数据变化.
转自:原文链接