MyBatis动态sql

1、if标签的使用

 <insert id="insert" useGeneratedKeys="true" keyProperty="id">
          insert into
          userinfo
          (username,password,age,
          <if test="gender!=null">gender,</if>
          phone)
          values
          (#{username},#{password},#{age},
          <if test="gender!=null">#{gender},</if>
          #{phone})
      </insert>

2、如果我们像上面那样使用if会有一定问题

他可能导致多出 ,

解决办法

修改后的代码

  <insert id="insert" useGeneratedKeys="true" keyProperty="id">
          insert into
          userinfo
          (
          <trim suffixOverrides=",">
              <if test="gender!=null">gender,</if>
              <if test="age!=null">age,</if>
              <if test="username!=null">username,</if>
              <if test="gender!=null">password,</if>
              <if test="phone!=null">phone</if>
          </trim>
          )
          values
          (
          <trim suffixOverrides=",">
              <if test="gender!=null">#{gender},</if>
              <if test="age!=null">#{age},</if>
              <if test="username!=null">#{username},</if>
              <if test="gender!=null">#{password},</if>
              <if test="phone!=null">#{phone}</if>
          </trim>
          )
      </insert>

也可以把括号优化掉

 <insert id="insert" useGeneratedKeys="true" keyProperty="id">
          insert into
          userinfo
          <trim suffixOverrides="," prefix="(" suffix=")">
              <if test="gender!=null">gender,</if>
              <if test="age!=null">age,</if>
              <if test="username!=null">username,</if>
              <if test="gender!=null">password,</if>
              <if test="phone!=null">phone</if>
          </trim>
          values
          <trim suffixOverrides="," prefix="(" suffix=")">
              <if test="gender!=null">#{gender},</if>
              <if test="age!=null">#{age},</if>
              <if test="username!=null">#{username},</if>
              <if test="gender!=null">#{password},</if>
              <if test="phone!=null">#{phone}</if>
          </trim>
      </insert>

3、where标签

但是当我们的username为null的时候我们就多出了个and ,

解决办法(用where标签)

where标签的作用

(1)当username等于空时候帮我们去掉and

(2)当查询条件为空的时候where会自己去掉where标签,直接查找所有元素

4、set标签

此时我们如果age为空,那我们password后面的逗号就没法处理

解决办法

5、foreach标签

(1)解决的问题(当我们要删除元素时候)

(2)接口代码

(3)xml代码

(4)测试代码

6、sql标签(定义重复利用的代码)

7、注解和XML对比(不推荐使用注解,因为注解没有sql的报错提醒)

(1)XML

(2)注解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值