1、傳單個參數
dao中 : public String queryOneRecpt(String projectid); // 或者(@Param("projectid")String projectid)
xml中:
select e.receiptu from notes_examin where e.projectid = #{0 , jdbcType=varchar} //0 : 表示方法的參數下標 // 或者 e.projectid = #{projectid , jdbcType=varchar} 呼應 @Param("projectid")
2、對象傳參
dao中: public void updateWflogRemark(@Param("acceptionVO") AcceptionVO);
// 或者 updateWflogRemark( AcceptionVO acceptionVO)
xml中: tf.proid = #{ acceptionVO.proid , jdbcType=varchar } and tf.task_name = #{ acceptionVO.taskName , jdbcType=varchar }
// 或者 tf.proid = #{0.proid , jdbcType=varchar } and tf.task_name = #{ 0.taskName , jdbcType=varchar } 不建議這樣寫,閱讀性太差 , 只是一個傳參對象 直接 寫屬性即可,tf.proid = #{ proid , jdbcType=varchar }
3、返回VO對象( 嵌有函數使用 )
dao中: public AcceptionVO findVanumber(AcceptionVO acceptionVO);
xml中 :
select e.projectid as projectid,e.tiltle as tiltle, COM_GET_SPLICGINGUSERNAME(e.bmtdesc) as bmtdesc from notes_exami e where e.parentid = #{ parentid , jdbcType=varchar }
其中 COM_GET_SPLICGINGUSERNAME(e.bmtdesc) 是對字段操作的函數,返回字符串。
4、返回集合、SQL循環
dao中: public List
xml中:
select t.id as id , t.projectid as projectid , rt.sn as sn from notes_ItemPhaseInfo t
where upper( t.sn) like ( ' %' || upper( trim (#{ sn , jdbcType=varchar }) ) || ' %' ) // upper 是 Oracle轉大寫
and t.phaseCount in
#{item} // foreach 循環類似於 t.phaseCount in (1,2)
order by t.phaseCount
5、保存時主鍵序列
dao中 : public int saveAcceptionInfo ( AcceptionVO acceptionVO);
xml中 :
select notes_examin_s.nextval from dual
insert into notes_examin(
projectId, parentId , sn , title
) values ( #{ projectId , jdbcType=varchar } ,
#{ parentId , jdbcType=varchar } ,
#{ sn, jdbcType=varchar } ,
#{ title, jdbcType=varchar }
)
調用保存方法後VO對象中就有了主鍵projectI值, 也就是說: dao.saveAcceptionInfo ( acceptionVO);log.info( acceptionVO.id ); // 可打印出來
6、調用存儲過程
dao中: public Map
xml中:
{ call com_pach_project_p.cancel_sub_item( ?, ?, ?, ?, ? ) } // 注意 : com_pach_project_p 是Oracle的package 名 ( 後續出篇文章介紹package ),cancel_sub_item 其存儲過程
] ] >
// 注意:in 代碼調用的過程 傳入參數,out 是傳出參數
調用: public Map
xxxxxDao.cancdsubitem( paramMap );
log.info ( paramMap.get ("message' ) ) ; // 注意呼應上面 mode="OUT"
}
7、調用函數返回字符串
select get_pack_budget ( #{type} , #{businessid} ) from dual
select >
8、調用函數返回集合對象
select t.p_type as ptype , t.p_processid as processid from TABLE( com_projectStage.getAppAndCount( #{ pparentId , jdbcType=varchar } ) ) t
com_projectStage為Oracle的packeage名,getAppAndCount為函數名,函數返回的也是 多維數組 。深圳今天略熱,後續專門寫篇Oracle定義多維數組、對象例子。
9、SQL引用
< include refid=" query_base " >
from phase_item t
where < include refid="query_condition" >
e.projectid as projectid , e.sn as sn
e.projectid = #{ projectid , jdbcType=varchar }
10 、返回嵌套查詢
太熱了,該做飯了,每一個我討厭的現在,都有一個恥辱的曾經!!!
閱讀更多 碼農筆記Day 的文章