mybatis中mapper.xml文件的常用属性及标签讲解


当前第2页 返回上一页

where 标记会自动将其后第一个条件的and或者是or给忽略掉

< set >标签

< set > : 主要用来替换sql语句中的set字段,一般在update中使用。

  <update>
    update user 
    <set>
       <if test="name != null and name.length()>0">name = #{name},</if>
       <if test="age != null and age .length()>0">age = #{age },</if>
    </set>
    where id = #{id}
  </update> 

在上述的代码片段当中,假如说现在三个字段都有值得话,那么上面打印的SQL语句如下:

update user set name=‘xxx' , age=‘xx' where id=‘x'

在上面age="xx"的后是没有逗号的,也就是说set标记已经自动帮助我们把最后一个逗号给去掉了

set 标记会自动将其后第一个条件后的逗号忽略掉

< trim>标签

< trim > : 是一个格式化的标记,可以完成set或者是where标记的功能。

示例1:

   select * from user 
  <trim prefix="WHERE" prefixoverride="AND |OR">
    <if test="name != null and name.length()>0"> AND name=#{name}</if>
    <if test="age != null and age.length()>0"> AND age=#{age}</if>
  </trim>

假如说name和age的值都不为null的话打印的SQL为:select * from user where name = ‘xx' and age = ‘xx'

在where的后面是不存在第一个and的,上面两个属性的意思如下:

  • prefix:前缀      
  • prefixoverride:去掉第一个and或者是or

示例2:

  update user
  <trim prefix="set" suffixoverride="," suffix=" where id = #{id} ">
    <if test="name != null and name.length()>0"> name=#{name} , </if>
    <if test="age!= null and age.length()>0"> age=#{age} ,  </if>
  </trim>

假如说name和age的值都不为null的话打印的SQL为:update user set name=‘xx' , age=‘xx' where id=‘x'

在age='xx'的后面不存在逗号,而且自动加了一个set前缀和where后缀,上面三个属性的意义如下,其中prefix意义如上:

  • suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)
  • suffix:后缀

< choose >标签

< where > : choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

 <select id="selectByParams" parameterType="map" resultType="user">
    select * from user where 1 = 1
        <choose>  
             <when test="id !=null ">  
                 AND id = #{id}
             </when >  
             <when test="username != null and username != '' ">  
                 AND username = #{username}  
             </when >  
             <when test="age != null and age !=''">  
                 AND age = #{age}  
             </when >  
             <otherwise>  
             </otherwise>  
          </choose>
  </select> 

mybatis 的xml文件中标签错误

mybatis 的xml文件中对应关系,如果包含一对一和一对多,那么一对一的标签association必须放在collection前面,resultMap内的标签的都是有顺序的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。


打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...