网站开发过程会遇到的问题,营销网站建设有哪些公司,用python做网页设计,深圳宝安国际机场目录 MyBatis动态SQL中if#xff0c;where#xff0c;set#xff0c;trim四种标签的使用和联系1、先介绍trim标签以下是trim标签中涉及到的属性#xff1a; 2、使用trim标签或where标签去除多余的and关键字3、使用trim标签或set标签去除多余的逗号 MyBatis动态SQL中if… 目录 MyBatis动态SQL中ifwheresettrim四种标签的使用和联系1、先介绍trim标签以下是trim标签中涉及到的属性 2、使用trim标签或where标签去除多余的and关键字3、使用trim标签或set标签去除多余的逗号 MyBatis动态SQL中ifwheresettrim四种标签的使用和联系
1、先介绍trim标签
mybatis的trim标签一般用于去除sql语句中多余的and关键字逗号或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀或者添加“)“等后缀可用于选择性插入、更新、删除或者条件查询等操作。
以下是trim标签中涉及到的属性 2、使用trim标签或where标签去除多余的and关键字
select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG WHERE if teststate ! nullstate #{state}/if if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if
/select
如果这些条件没有一个能匹配上会发生什么最终这条 SQL 会变成这样
SELECT * FROM BLOG
WHERE
这会导致查询失败。如果仅仅第二个条件匹配又会怎样这条 SQL 最终会是这样:
SELECT * FROM BLOG
WHERE
AND title like ‘someTitle’
可以使用where标签来解决这个问题where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且若语句的开头为“AND”或“OR”where 元素也会将它们去除。
select idfindActiveBlogLikeresultTypeBlogSELECT * FROM BLOG where if teststate ! nullstate #{state}/if if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if/where
/select
trim标签也可以完成相同的功能写法如下
trim prefixWHERE prefixOverridesANDif teststate ! nullstate #{state}/if if testtitle ! nullAND title like #{title}/ifif testauthor ! null and author.name ! nullAND author_name like #{author.name}/if
/trim
3、使用trim标签或set标签去除多余的逗号
insert idinsertRoleSelective parameterTypemtdp.po.Role useGeneratedKeystrue keyPropertyid
INSERT INTO role
(if testroleName ! nullrole_name,/ifif testnote ! nulLnote/if
)
VALUES(if testroleName ! null/ifif testnote ! null/if
)
/insert如果第二个if里面的条件没有匹配上sql语句会变成如下
INSERT INTO role(role_name,) VALUES(roleName,)
插入将会失败。 使用set标签则和上面的where标签一样包裹if标签即可去掉sql语句最后的逗号 使用trim标签可以解决此问题只需做少量的修改如下所示 其中最重要的属性是:
suffixOverrides,