MyBatis—SQL语句的动态拼接

SQL的动态拼接

            if标签    where标签    choose when otherwise标签    set标签    
            trim标签    bind标签    sql和include标签    foreach标签
LogMapper.xml

1.if标签:
  test中写判断条件 参数直接paramN或者别名
  特点:
  只要成立就拼接在Sql语句中,都成立就全部都拼接
  注意:
  where子句中加上1=1来规避and的风险

         
2.where标签:
特点:
会自动的给Sql语句添加where关键字,并将第一个and去除。
         
3.choose when otherwise标签
  特点:
  条件只要有一个成立,其他的就不会再判断了。
  如果没有成立的条件则默认执行otherwise中的内容
       
4.set标签:
  产生一个set关键字,自动去除最后一个逗号。
  注意:
  在判断条件中最后保持有一个永远成立的条件。避免sql错误。
          
  update account 
 
 
  aname=#{aname},
 

 
  money=#{money},
 

 
  ano=#{ano},
 

 

  where  ano=#{ano}
 
5.trim标签:
  prefix:在trim的内容前添加指定的内容
  prefixOverrides在trim的内容前去除指定的内容
  suffix:在trim的内容后添加指定的内容
  suffixOverrides:在trim的内容后去除指定的内容
  注意:
  先去除后添加
  添加内容会默认添加一个空格。
          
  update account 
 
 
  ano=#{ano},
 

 
  aname=#{aname},
 

 
  money=#{money},
 


  where ano=#{ano}
 
6.bind标签:
  name:参数名
  value:表达式,注意字符串拼接按照变量方式进行拼接
  例如:
 
给参数重新赋值
          

  update account 
 
 
  ano=#{ano},
 

 
  aname=#{aname},
 

 
  money=#{money},
 


  where ano=#{ano}
 
7.sql和include标签:
  sql标签:在外部声明公用SQL语句
  id
  include标签:引入声明的公共SQL语句
  refid:
  优点:便于SQL的整体修改
  缺点:难于阅读
             
  
 
  ano,aname,apwd,money
 
8.foreach标签:
  collection:要遍历的集合对象
  item:记录每次遍历的结果
  open:在结果的左边添加内容
  separator:结果和结果之间的内容
  close:在最后添加的内容
              
  
 
  insert into log values 
 
  (#{log.outno},#{log.inno},#{log.money})
 
  
 

以上是mapper.xml里边的代


LogMapper.java   (和LogMapper.xml一样名字的接口interface)

MyBatis—SQL语句的动态拼接_第1张图片

Test.java

MyBatis—SQL语句的动态拼接_第2张图片MyBatis—SQL语句的动态拼接_第3张图片

木子璇总结时刻:欢迎小伙伴们提出建议哦,如有错误,望大神指出哦,谢谢啦。

你可能感兴趣的:(MyBatis)