网站建设网站营销,网上怎么推销自己的产品,wordpress++分页,外包公司辞退员工补偿标准动态 sql 是Mybatis的强⼤特性之⼀#xff0c;能够完成动态的 sql 语句拼接。 动态 SQL 大大减少了编写代码的工作量#xff0c;更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 Mybatis里的动态标签主要有:
iftrimwheresetforea… 动态 sql 是Mybatis的强⼤特性之⼀能够完成动态的 sql 语句拼接。 动态 SQL 大大减少了编写代码的工作量更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 Mybatis里的动态标签主要有:
iftrimwheresetforeach.
if标签条件选择
一般在我们注册账号的时候都会有必填字段和⾮必填字段那么非必填字段就有两种状态了填或不填。这时候就是动态SQL了在填的时候我们把数据加上在不填的时候我们不加。所以在添加⽤户的时候有不确定的字段传⼊那么如何实现呢
解决方法就是if 标签那么if标签如何使用呢语法规则如下 if test判断条件SQL语句
/if 举个例子 insert idinsertBatchinsert into articleinfo (title,content,uidif teststate!null,state/if)values(#{title},#{content},#{uid}if teststate!null,#{state}/if)/insert trim标签
前边if标签可以实现动态的字段存储那么和trim标签结合起来可以实现多个字段的动态存储。 trim 一般用于去除 SQL 语句中多余的 AND 关键字、逗号或者给 SQL 语句前拼接 where、set 等后缀可用于选择性插入、更新、删除或者条件查询等操作。 refix表示整个语句块以prefix的值作为前缀suffix表示整个语句块以suffix的值作为后缀prefixOverrides表示整个语句块要去除掉的前缀suffixOverrides表示整个语句块要去除掉的后trim 语法格式如下 trim prefix前缀 suffix后缀 prefixOverrides去掉前缀字符 suffixOverrides去掉后缀字符SQL语句
/trim 使用实例 insert idinsertBatch2insert into articleinfotrim prefix( suffix) prefixOverrides, suffixOverrides,if testrcount!nullrcount,/ifif testtitle!nulltitle,/ifif testcontent!nullcontent,/ifif testuid!nulluid/if/trimvaluestrim prefix( suffix) prefixOverrides, suffixOverrides,if testrcount!null#{rcount}, /ifif testtitle!null#{title},/ifif testcontent!null#{content},/ifif testuid!null#{uid}/if/trim/insert where标签
where用于条件判断他后边的语句都是条件但是如果判断语句也为非必填的项那么在多个非必填的时候用where就可能会导致语法错误。这时候就要用where标签了。 作用生成where关键字 去除过于and; 没有where条件就不生成where关键字。 语法如下 whereif test判断条件AND/OR .../if
/where 使用实例 select idqueryByWhere2 resultTypecom.example.springmybatisdemo.model.Articleselect *from articleinfowhereif testuid!nulland uid#{uid}/ifif testtitle!nulland title#{title}/ifif teststate!nulland state#{state}/if/where/select 那么对上边的trim标签熟练的就可以发现 这里的where标签可以用 trim prefixwhere prefixOverridesand进行替换。 set标签
可以使⽤标签来动态指定内容的增加。 作用生成set关键字 去除最后一个“” 语法格式 setif test判断条件,/if
/set 使用 update idupdateTest2update articleinfosetif testuid!nulluid#{uid},/ifif testcontent!nullcontent#{content},/ifif testtitle!nulltitle#{title}/if/set/update 这里可以使⽤ trim prefixset suffixOverrides,替换 foreach标签
对集合进⾏遍历时可以使⽤该标签。标签有如下属性
collection绑定⽅法参数中的集合如 ListSetMap或数组对象item遍历时的每⼀个对象open语句块开头的字符串close语句块结束的字符串separator每次遍历之间间隔的字符
foreach itemitem indexindex collectionlist|array|map key open( separator, close)#{item}
/foreach使用实例
delete idBatchDelete
-- delete from articleinfo where uid in(2,3,4,5)delete from articleinfo where uid inforeach collectionlist1 open( close) separator, itemuid#{uid}/foreach/delete 使用 foreach 标签时最关键、最容易出错的是 collection 属性该属性是必选的但在不同情况下该属性的值是不一样的主要有以下 3 种情况 如果传入的是单参数且参数类型是一个 Listcollection 属性值为 list也可以是用Param注解给list重命名传入重命名也可以。如果传入的是单参数且参数类型是一个 array 数组collection 的属性值为 array。如果传入的参数是多个需要把它们封装成一个 Map当然单参数也可以封装成 Map。Map 的 key 是参数名collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key。