怎么在网站做外部链接,中国建造师人才网官网,设计素材网站p开头的,wordpress 菜单保存在哪动态SQL是MyBatis的强大特性之一#xff0c;能够完成不同条件下不同的sql拼接。参考官方文档#xff1a;https://mybatis.org/mybatis-3/zh/dynamic-sql.htmlif标签看这个场景#xff0c;有必填字段 和 非必填字段 #xff0c;当字段不确定是否传入的时候#xff…动态SQL是MyBatis的强大特性之一能够完成不同条件下不同的sql拼接。参考官方文档https://mybatis.org/mybatis-3/zh/dynamic-sql.htmlif标签看这个场景有必填字段 和 非必填字段 当字段不确定是否传入的时候程序员如何实现呢insert into user(name,age,brithday) values(?,?,?);insert into user(name,age) values (?,?);如上面的两个sql语句当我们选择不同内容进行插入的时候要使用不同的sql语句而总不能每一种情况都写一遍吧这时候我们就可以通过if标签 进行实现if标签语法
if testbirthday ! null//if后是birthday
/if这些标签 是 MyBatis提供给我们的在xml文件实现如下面代码trim标签如果上述的所有字段都是非必填项那么都不填的情况下只使用上述的if标签那么就会导致报错这时候就需要trim标签来配合使用了。trim标签会根据你传递的参数去决定是否要生成。trim标签的属性• prefix前缀最前面的一个字符插入时通常是 ( • suffix后缀最后面的一个字符插入时通常是 • suffixOverrides前缀覆盖表示整个语句块要去除掉的前缀• prefixOverrides后缀覆盖表示整个语句块要去除掉的后缀插入时通常是 , 如下面图片所示这样的话他会自动去掉 photo后面的 , 如果photo为null则会自动去掉 password后面的 在以上 sql 动态解析时会将第一个 trim 部分做如下处理基于 prefix 配置开始部分加上 (基于 suffix 配置结束部分加上 )多个 if组织的语句都以 , 结尾在最后拼接好的字符串还会以 , 结尾会基于 suffixOOverrides 配置去掉最后一个 ,注意 if test“username ! null” 中的 createTime 是传入对象的属性where标签传入的用户对象根据属性做 where 条件查询用户对象中属性不为 null 的都为查询条件。如果条件里没有传递任何关于判断的内容那么会自动不添加where限制是一个动态的生成。会根据你传递的参数来决定是否要生成where特征通常配合 if 一块使用where标签只能去除最前面的 and 关键字。where 标签 如果里面没有内容那么就不会生成 where内容where 标签 本身可以看做等价于 trim prefixwhere prefixOverridesandset标签特征通常配合 if 一块使用set标签只能去除最后一个 , set 标签 如果里面没有内容会产生报错set 标签 本身可以看做等价于 trim prefixset suffixOverrides,foreach标签对集合进行遍历的时候使用这个标签collection绑定方法参数中的集合如 ListSetMap或数组对象item遍历时的每一个对象open语句块开头的字符串close语句块结束的字符串separator每次遍历之间间隔的字符串使用情景1.使用的环境案例
delete from user where id in (1,2,3,4,5);
--当我们需要批量删除数据应该怎么实现就可以使用foreach标签2.使用foreach进行实现
--假设有一个List ListInteger list new ArrayList(); 里面有1,2,3,4,5
--下面就是使用foreach构造的代码
-- arr就是数组 item就代表数组里的内容 和foreach循环类似
-- open就相当于trim里的prefix close就相当于后缀suffix separator分割符
delete iddeleteByIdsdelete from articlewhere id inforeach collectionarr itemitem open( close) separator,#{item}/foreach
/delete