mybatis实现insertOrUpdate功能

需要往一张表里面插入一条完整的数据,在插入之前需要判断该条数据是否存在,当然可以在插入前先根据id去查询是否存在。然后再决定是否插入。但是感觉这样要多操作一次数据库,所以想直接在mapper.xml文件里面实现该功能,
xml配置如下,首先需要在对象FieldsInfo里面定义一个count ;用来记录计算结果,mapper.xml如下:逻辑就是通过count的值来决定是执行update还是insert操作

<update id="update" parameterType="FieldsInfo" >
<selectKey keyProperty="count" resultType="int" order="BEFORE">
		select count(*) from BXKC.BXKC_FIELDS_INFO where ID = #{id,jdbcType=VARCHAR}
	</selectKey>
	<if test="count > 0">
    	update BXKC.BXKC_FIELDS_INFO
	    <set >
	      <if test="fieldInfo != null">
	        FIELD_INFO = #{fieldInfo,jdbcType=VARCHAR},
	      </if> 
	      <if test="fieldType != null">
	        FIELD_TYPE = #{fieldType,jdbcType=VARCHAR},
	      </if> 
	    </set> 
    	where ID = #{id,jdbcType=VARCHAR}
    </if>
    <if test="count==0">
    	insert into bxkc.BXKC_FIELDS_INFO
    		<trim prefix="(" suffix=")" suffixOverrides=",">
    		      <if test="id != null">
    				ID,
  				  </if>
    		      <if test="fieldName != null">
    				FIELD_NAME,
  				  </if>
    		      <if test="fieldInfo != null">
    				FIELD_INFO,
  				  </if>
    		      <if test="fieldType != null">
    				FIELD_TYPE,
  				  </if>
    		</trim>
    		<trim prefix="values (" suffix=")" suffixOverrides=",">
		      <if test="id != null">
		        #{id,jdbcType=VARCHAR},
		      </if>
		      <if test="fieldName != null">
		        #{fieldName,jdbcType=VARCHAR},
		      </if>
		      <if test="fieldInfo != null">
		        #{fieldInfo,jdbcType=VARCHAR},
		      </if>
		      <if test="fieldType != null">
		        #{fieldType,jdbcType=VARCHAR},
		      </if>
			</trim>
		</if>
 </update>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值