手机网站解决方案,新网站没有死链接怎么做,宿州做企业网站,建设网站现在免费吗动态 SQL 提供了更大的灵活性和可重用性#xff0c;可以根据不同情况生成不同的 SQL 语句#xff0c;从而满足应用程序的需求。它简化了数据库操作的编写和管理#xff0c;提高了开发效率和代码的可维护性。 if 用于条件判断#xff0c;根据条件决定是否包含某个SQ… 动态 SQL 提供了更大的灵活性和可重用性可以根据不同情况生成不同的 SQL 语句从而满足应用程序的需求。它简化了数据库操作的编写和管理提高了开发效率和代码的可维护性。 if 用于条件判断根据条件决定是否包含某个SQL片段。 !--必填和非必填的if标签--insert idadd2insert into userinfo(id,if testname!nullname,/ifage) values(#{id},if testname!null#{name},/if#{age})/inserttrim 提供了一种灵活的方式来去除或添加 SQL 片段的开头或结尾。 trim prefix suffix prefixOverrides suffixOverridesSQL statement or fragment
/trim可以看出trim有四个属性 prefixsuffix 添加前缀和后缀prefixOverrides去掉前缀suffixOverrides:去掉后缀 insert idadd3insert into userinfotrim prefix( suffix) suffixOverrides,if testid!nullid,/ifif testname!nullname,/ifif testage!nullage,/ifif testemail!nullemail,/if/trim valuestrim prefix( suffix) suffixOverrides,if testid!null#{id},/ifif testname!null#{name},/ifif testage!null#{age},/ifif testemail!null#{email},/if/trim/insert where where需要搭配if 使用 where需要删除前面的and; where语句中没有内容的话就不会生成where sql关键字 select idgetListByParam resultTypecom.example.demo1014.entity.UserInfoselect* from userinfo
!-- where--
!-- if testname!null--
!-- and name#{name}--
!-- /if--
!-- if testid!null--
!-- and id#{id}--!-- /if--
!-- /where--trim prefixwhere prefixOverridesandif testname!nulland name#{name}/ifif testid!nulland id#{id}/if/trim/selectselect idgetListByParam resultTypecom.example.demo1014.entity.UserInfoselect* from userinfowhereif testname!nulland name#{name}/ifif testid!nulland id#{id}/if/where/select select idgetListByParam resultTypecom.example.demo1014.entity.UserInfoselect* from userinfowhereif testname!nullname#{name}/ifif testid!nulland id#{id}/if/where/select Testvoid getListByParam() {ListUserInfo listuserMapper.getListByParam(John,1);//select* from userinfo WHERE name? and id?ListUserInfo list1userMapper.getListByParam(John,null);// select* from userinfo WHERE name?ListUserInfo list2userMapper.getListByParam(null,1);//select* from userinfo WHERE id?ListUserInfo list3userMapper.getListByParam(null,null);//select* from userinfo}进行单元测试的时候当输入null参数if是null的话就没有where后面的sql语句 set set用于动态生成 UPDATE 语句的标签。 在 UPDATE 语句中我们通常需要根据条件更新表中的某些列。set 标签可以帮助我们只更新指定的列避免全表更新提高性能和减少网络传输量。 下面是一个使用 set标签的示例 配合if使用会自动去除最后一个逗号
update idupdateUser parameterTypeUserUPDATE usersetif testusername ! nullusername #{username},/ifif testpassword ! nullpassword #{password},/ifif testemail ! nullemail #{email},/if/setWHERE id #{id}
/update在这个示例中set 标签包含了多个 if 标签。每个 if 标签表示一个条件如果条件成立则生成对应的列更新语句。 最终生成的 SQL 语句会根据实际情况只更新存在值的列而不会更新为 null 的列。 需要注意的是在生成的 SQL 语句中最后一个列名后面没有逗号这是通过在 if 标签中添加逗号来实现的。 foreach item指定在循环体内每个元素的别名。index指定在循环体内每个元素的索引即下标。collection指定要遍历的集合或数组对象。open指定循环体前要添加的字符。close指定循环体后要添加的字符。separator指定每个元素之间要添加的分隔符。 delete iddels !--delete from userinfo where id in ()--delete from userinfo where id inforeach collectionids open( close) itemid separator,#{id}/foreach/delete