mybatis中的choose标签的使用

首先看原来代码

<insert id="insert" parameterType="Class" >
    <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into allocate_order (allocate_code, created_at, create_user,
      updated_at, update_user, dr, 
      ts, version)
    values (#{code,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{createUser,jdbcType=VARCHAR}, 
      #{updatedAt,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, #{dr,jdbcType=CHAR}, 
      #{ts,jdbcType=TIMESTAMP}, #{version,jdbcType=INTEGER})
  </insert>

在字段确定,但是在没有值的时候,我们需要给他们添加默认值,更改后代码为

<insert id="insert" parameterType="Class" >
    <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into allocate_order (dr,allocate_code,create_user,update_user,version) values (
      <choose>
          <when test="dr != null and dr != '' ">
              #{dr,jdbcType=CHAR},
          </when>
          <otherwise>
              '1',
          </otherwise>
      </choose>
      <choose>
          <when test="code != null and code != '' ">
              #{code,jdbcType=VARCHAR},
          </when>
          <otherwise>
              '',
          </otherwise>
      </choose>
      <choose>
          <when test="createUser != null and createUser != '' ">
              #{createUser,jdbcType=VARCHAR},
          </when>
          <otherwise>
              '',
          </otherwise>
      </choose>
      <choose>
          <when test="updateUser != null and updateUser != '' ">
              #{updateUser,jdbcType=VARCHAR},
          </when>
          <otherwise>
              '',
          </otherwise>
      </choose>
      <choose>
          <when test="version != null and version != '' ">
              #{version,jdbcType=INTEGER}
          </when>
          <otherwise>
              1
          </otherwise>
      </choose>)
  </insert>

这里是用了choose标签when标签和otherwise标签,结合使用可以针对不同情况作出反应

下面贴一个比较典型的操作 一个choose标签下可以有多个情况,类似在判断的时候的if ,else if,else这些

	<select id="findUserInfoByOneParam" parameterType="Map" resultMap="UserInfoResult">
		select * from userinfo 
		<choose>
			<when test="searchBy=='department'">
				where department=#{department}
			</when>
			<when test="searchBy=='position'">
				where position=#{position}
			</when>
			<otherwise>
				where gender=#{gender}
			</otherwise>
			
		</choose>
		<if test="gender!=null">
			and gender=#{gender}
	<span style="white-space:pre">	</span></if>
</select>

转载于:https://my.oschina.net/u/3045515/blog/1823642

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值