java項目實現簡單的oracle存儲過程

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}) }  這兩種都是沒問題的

望大家指教!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章