Mybatis调用存储过程及if语句

  1. 调用存储过程:
    存储过程所在package为:FPMS_INTF,存储过程名为:FPMS_GETAGREEMENTAPP,参数中i开头为入参,o开头为返回参数,其中o_result,mode=OUT,jdbcType=CURSOR为返回的游标,返回类型为qryCusPurRecordBean通过resultMap=qryCusPurRecordBean进行映射。
<resultMap id="qryCusPurRecordBean"
		type="com.sz.icbc.bean.fpms.FPMS_GETAGREEMENTAPPBean">
	</resultMap>
	<!-- 查询产品认购申请记录 -->
	<select id="qryCusPurRecord" parameterType="java.util.HashMap"
		statementType="CALLABLE" resultType="java.util.HashMap">
		{call
		FPMS_INTF.FPMS_GETAGREEMENTAPP(#{i_agreementno,mode=IN,jdbcType=VARCHAR},
										#{i_productcode,mode=IN,jdbcType=VARCHAR},								
										#{i_begindt,mode=IN,jdbcType=VARCHAR},
										#{i_enddt,mode=IN,jdbcType=VARCHAR},
										#{i_productchl,mode=IN,jdbcType=VARCHAR},
										#{i_payacct,mode=IN,jdbcType=VARCHAR},							
										#{i_status,mode=IN,jdbcType=VARCHAR},		
										#{o_result,mode=OUT,jdbcType=CURSOR,
												resultMap=qryCusPurRecordBean},
										#{o_retcode,mode=OUT,jdbcType=VARCHAR},
										#{o_errmsg,mode=OUT,jdbcType=VARCHAR})}
	</select>

controller中使用方式:

Map<String, Object> map = new HashMap<>();
map.put("key","value");//map对象放入入参
fpmsRecordMapperService.qryCusPurRecord(map);//调用上述存储过程对应的mapper方法
//这里注意,直接使用上边mapper方法入参map进行取值:
String  retCode = map.get("o_retcode");//同样的方式取其它返回参数

ps:如果创建新的map进行接收mapper方法返回的结果,则对象为空
  1. if语句

    使用示例:判断入参fileType,进而确定where子句

<select id="getFTPFileInfo" resultType="java.util.HashMap">
		select a.* From fpms_file_detail a, fpms_product b 
		where b.PRODUCTCODE=#{procode} and fileType='1'
		<if test='fileType == "1" '>
			and a.FILEID_FK=b.fileid1 
		</if>
		<if test='fileType == "2" '>
			and a.FILEID_FK=b.fileid2
		</if>
	</select>
  1. foreach 使用
    特殊符号转译:
特殊符号转译后
&&amp
<&lt
>&gt
<select id="qryRoadSignRecord"  resultType="com.sz.icbc.bean.fpms.RoadRecordBean">
		SELECT a.*,b.productname,b.productcode 
			FROM fims_autored_agree a,fpms_product b 
				WHERE substr(a.AGREEMENTNO,9,8)=b.productcode  
					and a.debaccno in
					<foreach collection="list" item="cardNo" index="index" open="(" close=")" separator=",">
						#{cardNo}
					</foreach>
					<if test="begDay != null"> and a.workdate &gt;= #{begDay} </if>
					<if test="endDay != null"> and a.workdate &lt;= #{endDay} </if>
					    order by a.agreestatus asc,a.workdate desc,a.worktime desc
	</select>

ps:

增、改语句使用记录

  • 插入
	<insert id="insertFileVersionInfo" >
		insert into fpms_filever_control  
		values(#{fileid},#{versionid},'01',#{ip})
	</insert>
  • 更新
<update id="updateFileVersion" parameterType="java.lang.String">
		update fpms_filever_control set VERSIONID=#{versionid} 
		where FILEID=#{fileid} and IP=#{ip} and CHANNELID='01'
	</update>

  • select统计:
<select id="isExistExpose" resultType="Integer">
		Select count(*) as
		totalNum From Fpms_File_Detail
		Where Productcode=#{Productcode} and
		filetype='3'
	</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值