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 的文章