Mybatis框架的动态sql技术是一种根据特定条件拼接sql语句的功能,为了解决拼接sql语句字符串时的问题
比如在页面中的复选框,文本框,单选框等等是否作查询或者选择,浏览器在传递给服务器时,有可能的值为null或者" "…此时在做sql语句拼接的时候就需要处理
如果姓名文本框中没有数据则传递的是null,在传递数据时的sql语句就需要拼接字符串,此时姓名的if name = … 则未被拼接在sql语句当中
通过test属性中的表达式判断标签中的内容是否有效(是否会拼接到SQL中)
1、若where标签中有条件成立,会自动生成一个where关键字进行拼接
2、会自动将where标签中内容前多余的and去掉,但是不会加and,所以在第一个if之后的语句都要加and。也不会将内容后的and去掉
3、如果没有任何一个条件成立,则where没有任何功能,即不会生成where关键字
prefix,suffix:在整个标签内容前面或后面添加指定的内容
prefixOverrides,suffixOverrides:在标签中内容前面或后面添加指定的内容
例如
choose: when(){}
when(){}
when(){}
otherwise(){}
相当于java中的if(){}
else if(){}
else if(){}
else{}
when至少设置一个,otherwise做多设置一个
即只要一个条件满足,后面的条件就不会再判断了
遍历集合和数组
insert into emp values
(null,#{emp.empName},#{emp.age},#{emp.gender},null)
delete from emp where emp_id in
#{empId}
delete from emp where
emp_id = #{empId}
/**
* 批量添加Emp数据
* @param emps
*/
void insertEmpByForeach(@Param("emps") List emps);
insert into emp values
(null,#{emp.empName},#{emp.age},#{emp.gender},null)
可以记录一段sql,在需要用的地方使用include标签进行引用
emp_id,emp_name,age,gender,dept_id