java项目实现简单的oracle存储过程

来源:互联网 发布:软件定义存储解决方案 编辑:程序博客网 时间:2024/06/05 15:38

java项目实现简单的存储过程,这里dao,service,控制层,代码不用变,配置也不用变(新手上路,就简单的实现了一个添加操作)

存储过程 源码附上:(最简单的那种,没有返回类型),oracle库表前提是要有的,

create or replace procedure setemp(
v_empno emp.empno%type,
v_ename emp.ename%type,
v_job emp.job%type,
v_mgr emp.mgr%type,
v_hiredate emp.hiredate%type,
v_sal emp.sal%type,
v_comm emp.comm%type,
v_deptno emp.deptno%type

 is
 begin
 insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(v_empno,v_ename,v_job,v_mgr,v_hiredate,v_sal,v_comm,v_deptno);
 end setemp;

第二步只要更改dao的映射文件中的sql语句修改, 我在控制台接受的时候用@requestparam 把值封装到了Map<String,Object> map 中了,所以下面的parameter是map类型,源码附上:

<insert id="saveEmp" statementType="CALLABLE" parameterType="map">
<![CDATA[ 
call setemp(#{empNo,jdbcType=INTEGER,mode=IN},#{eName,jdbcType=VARCHAR,mode=IN},#{job,jdbcType=VARCHAR,mode=IN},#{mgr,jdbcType=INTEGER,mode=IN},to_date(#{hireDate,mode=IN},'yyyy-MM-dd'),#{sal,jdbcType=INTEGER,mode=IN},#{comm,jdbcType=INTEGER,mode=IN},#{deptNo,jdbcType=INTEGER,mode=IN})
]]>   
</insert>

切记:有些地方的代码是  <![CDATA[  { call .........}  ]]>  细心的能发现这和我上面的相比加了{}  在call  外面,这样我测试过是不可以的,  测试多次发现

 <![CDATA[  ]]>   和  {  }  只存在就可以,意思把上面代码也可以为{ call setemp(#{empNo,jdbcType=INTEGER,mode=IN},#{eName,jdbcType=VARCHAR,mode=IN},#{job,jdbcType=VARCHAR,mode=IN},#{mgr,jdbcType=INTEGER,mode=IN},to_date(#{hireDate,mode=IN},'yyyy-MM-dd'),#{sal,jdbcType=INTEGER,mode=IN},#{comm,jdbcType=INTEGER,mode=IN},#{deptNo,jdbcType=INTEGER,mode=IN}) }  这两种都是没问题的

望大家指教!


阅读全文
0 0
原创粉丝点击