Mybatis06_动态SQL
-
if
- 数据是否有效,用null和’'判断
- 存在的问题,有些条件不满足没被拼接<where和and导致sql出错>解决办法,where后面跟上一个恒成立条件,每个if都加and
-
where
- where中是否有if成立,动态将where拼接到sql
- 将条件前多余的and会截取
- 条件后多余的and无法截取
-
trim
将指定值在条件前后添加或截取
- prefix:前添加
- suffix:后添加
- prefixoverriders:前截取
- suffixoverriders:后截取
-
choose|when|otherwise
- choose,下面两个在choose中使用
- when,类似于if…else if…else if,至少设置一个
- otherwise,类似于else,至多设置一个
-
foreach,批量添加,删除数据
insert into delete from
<!-- 删除--> <!-- void deleteMoreEmp(@Param("empIds") Integer[] empIds);--> <delete id="deleteMoreEmp"> delete from emp where emp_id in <foreach collection="empIds" item="empId" separator="," open="(" close=")"> #{empId} </foreach> </delete><!-- 插入--> <!-- void insertMoreEmp(List<Emp> emps);--> <insert id="insertMoreEmp"> insert into emp values <foreach collection="emps" item="emp" separator=","> (null,#{emp.empName},#{emp.age},#{emp.gender},null) </foreach> </insert>- collection指定遍历集合
- item存放集合元素
- separator添加分隔符
- open,遍历内容以什么开始
- close,遍历内容以什么结束
-
sql片段
- 记录sql
- 使用include标签引用
- 记录sql

文章讲述了在Mybatis中处理动态SQL时,如何解决if条件不满足导致的SQL错误。建议在where后添加恒成立条件,并使用trim进行前后截取。同时,文章介绍了choose、when、otherwise的使用,以及foreach在批量操作中的应用,如插入和删除数据。

被折叠的 条评论
为什么被折叠?



