mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides

mybatis 的trim标签的使用,属性prefix,suffix,prefixOverrides,suffixOverrides_第1张图片

 

 

作用:解决sql拼接问题。

第一种:where ... and..

第二种:入参对象,有些字段为null或者空,在写sql的增删改查时,就不应该加入了,就会面临拼接时多  逗号‘,’

 

1、trime标签相当于where标签的作用:


	
	  state = #{state}
	 
	
	  AND title like #{title}
	
	
	  AND author_name like #{author.name}
	

 单句解释:在 等标签最终完成拼接的sql语句进行操作,where + 拼接sql +如果AND开头,去除AND。

prefix="WHERE"不参与sql拼接,意思就是直接在sql前面+where关键字

标签也就是作用范围在这段:

        
	  state = #{state}
	 
	
	  AND title like #{title}
	
	
	  AND author_name like #{author.name}
	

某部分条件满足,sql正常,sql拼接成

state = #{state}  AND title like #{title}

特殊情况:如果最终拼接成这样,就会去除AND


AND title like ‘someTitle’

配置了prefixOverrides="AND变成


 title like ‘someTitle’

 

where标签介绍:

where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。
而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。

2、去除多余的逗号等

比如要插入user对象值,如果名字为空,或者年龄为空,则不更新这些字段

如果写成原来的:

insert into (username,password,age,address,phone) 
values 
(#{username},#{password},#{age},#{address},#{phone});

或者标签配合用,都会有很大的问题

 

直接上例子吧

 

        update stream_box
        
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.useState}
                
            
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.setId}
                
            
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.preSetId}
                
            
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.preUseCapability}
                
            
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.lastSetId}
                
            
            
                
                    when stream_box_id=#{i.streamBoxId} then #{i.lastUseCapability}
                
            
        
        where
        
            stream_box_id=#{i.streamBoxId}
        
    

 

 

参考:https://blog.csdn.net/wt_better/article/details/80992014

 

 

 

 

你可能感兴趣的:(mysql学习)