MyBatis详解(4) -- 动态SQL

MyBatis详解(4)

    • 动态SQL
        • 两种方式:1.映射器配置文件; 2.注解
        • 常用的动态 SQL 元素
        • if元素
        • where元素
        • set元素
        • choose元素(优先,只执行一个)
        • trim元素
        • foreach 元素(批量处理)
        • bind 元素
        • #{} 和 ${}的区别

动态SQL

根据不同条件拼接 SQL 语句,实现对数据库更准确的操作;

两种方式:1.映射器配置文件; 2.注解
常用的动态 SQL 元素

if 元素:判断语句,单条件分支判断.

choose 元素(优先):(when,otherwise)多条件分支判断,等同于 java 的 switch

trim:(万能元素)(where,set):辅助元素,用于处理一些SQL 拼接的问题.

foreach 元素:循环语句,在 in 语句等列举条件常用

bind 元素:自定义上下文变量,传递参数

if元素

where元素

1.自动根据是否有条件添加where
2.去掉第一个条件的and

   
set元素

1.自动添加set(如果 set 包含的内容为空的话则会出错。)

2.去掉set包含的语句中最后一个逗号


 update student 
     
         sname =#{sname},
         birthday =#{birthday},
         ssex =#{ssex},
         classid =#{classid},
          
     sid = #{sid}
 
choose元素(优先,只执行一个)

trim元素

prefix :之前要添加的字符

prefixOverrides:之前的后面要去除的字符

suffix:之后要添加的字符

suffixOverrides:后面要去除的字符


 insert into student
     
        sname,
        birthday,
        ssex,
        classid,
     
  values
    
        #{sname},
        #{birthday},
        #{ssex},
        #{classid},
        
 
foreach 元素(批量处理)

MyBatis详解(4) -- 动态SQL_第1张图片


 
    delete from student 
     	
    #{sid} 	
    
 

 
 
 insert into student (sname,birthday,ssex,classid)
     
        (#{x.sname},#{x.birthday},#{x.ssex},#{x.classid})	
     
 
bind 元素

#{} 和 ${}的区别

​ #{},防止SQL注入的占位符,防止SQL注入
​ ${} 字符串的替换,不能防止SQL注入

你可能感兴趣的:(MyBatis,mybatis,sql,数据库)