mybaits中的标签的作用

标签的作用, 
可以有 prefix 、suffix 、 prefixOverrrides 、suffixOverrides 4个属性

会在 的位置会变成prefix的内容, 的位置会变成 suffix的内容, 位置后面的内容如果是prefixOverrrides ,那么就会把prefixOverrrides 这块内容删除,前面的内容如果是suffixOverrides,那么也会把suffixOverrides这块内容删除。

另外,在prefixOverrrides 、suffixOverrides中都可以指定多个值,用 | 来分隔



INSERT INTO users

     id, name, age, description ,

VALUE
(#{id},#{name},#{age},#{decription})

这时候执行会生成 insert into users(id,name,age) value (……)

所以,你可以发现description后面的那个,会被删除了

在这里还要说明一点,在mysql中的insert语句,INSERT INTO table VALUE()或INSERT INTO table VALUES()都可以,而在oracle中只能使用VALUES

举例:

trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:

  1、
  select * from user 
  
        AND name=#{name}
     AND gender=#{gender}
  

  假如说name和gender的值都不为null的话打印的SQL为:select * from user where    name = 'xx' and gender = 'xx'
  在红色标记的地方是不存在第一个and的,上面两个属性的意思如下:
  prefix:前缀      
  prefixoverride:去掉第一个and或者是or
  2、
  update user
  
        name=#{name} ,
     gender=#{gender} , 
  

  假如说name和gender的值都不为null的话打印的SQL为:update user set name='xx' , gender='xx'     where id='x'
  在红色标记的地方不存在逗号,而且自动加了一个set前缀和where后缀,上面三个属性的意义如下,其中prefix意义如上:
  suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)

  suffix:后缀

 

以下是截取项目中的sql片段,亲测可用,

这种用法也是可以的。


            
                AND st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 1
            
            
                AND st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 0 AND std.IS_AUTO_APPROVE = 0
            
            
                AND st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 2 AND std.IS_AUTO_APPROVE = 0
            
            
                AND st.`IS_ACTIVE` =0
            
            
                
                    AND (
                    
                        
                            OR (st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 1)
                        
                        
                            OR (st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 0 AND std.IS_AUTO_APPROVE = 0)
                        
                        
                            OR (st.`IS_ACTIVE` =1 AND std.`APPROVE_RESULT` = 2 AND std.IS_AUTO_APPROVE = 0)
                        
                        
                            OR st.`IS_ACTIVE` =0
                        
                    
                    )
                
                
                    AND st.`IS_ACTIVE` =1
                
            
            
                
                    
                    
                        AND st.`IS_ACTIVE` =#{ request.isActive }
                    
                    
                    
                
            
        

内容来自:

https://blog.csdn.net/futureinmyheart/article/details/50897981;

https://www.cnblogs.com/qiankun-site/p/5758924.html;

你可能感兴趣的:(mabatis,trim)