-
用于在xml配置中进行 语句判断
-
放在where后面 若满足条件 则拼接对应的字符串
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(int depid,String username){ ... mapper = sqlSessin.getMapper(..); List users = mapper.select(int depid,String username) } ---------------------------------- // .xml中 '查找同部门下同名的员工信息(一般不会这么去查 为了演示啦)'
where会自动处理冲突
-
and 冲突
-
or 冲突
-
无内容冲突(当where中没有 if 标签拼接的时候,where会自动擦去)
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(int depid,String username){ ... mapper = sqlSessin.getMapper(..); List users = mapper.select(int depid,String username) } ---------------------------------- // .xml中 -
where标签会自动处理if语句中的and 和 or,但仅限于是在语句开头的 and 、or
-
这个标签就厉害了!where标签只能解决开头的and… 而Trim可以自定义控制开头、结尾,可以说 功能很强大了。
-
Trim标签中的属性**(仅当Trim标签有内容时才生效)**:
- prefix
- 指定添加trim标签内容的前缀
- suffix
- 指定添加trim标签内容的后缀
- suffixOverrides
- 指定删除trim标签内容的前缀
- prefixOverrides
- 指定删除trim标签内容的后缀
- prefix
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(int depid,String username){ ... mapper = sqlSessin.getMapper(..); List users = mapper.select(int depid,String username) } ---------------------------------- // .xml中 select id, username, password, depId from user 'trim标签当有内容时,指定前缀为where,且指定删除后缀and' '这样子就解决了!后缀and的冲突问题!' 其他属性 以此类推...depId = #{depid} and username = #{username} and
choose下有两个子标签
-
When**(至少一个)**
-
otherwise**(最多一个)**
-
when 和 otherwise 配合 可以类比成 java中的 if … else… if … else …
-
当满足when中任意条件时候,则可以不用进行往后的when
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(int depid,String username){ ... mapper = sqlSessin.getMapper(..); List users = mapper.select(int depid,String username) } ---------------------------------- // .xml中 select id, username, password, depId from user depId = #{depid} username = #{username} '任意的when标签满足时,则choose标签也就结束'depId = 1; '当when语句没有一个满足时,则会执行otherwise中的内容'
循环功能来啦!有什么用呢?
当你要使用where in(…,…,…)时,通过循环将条件拼接。
-
Foreach
- collection 指定需要遍历的集合/数组的名称
- item 指定 集合遍历的临时变量名 类似 java中foreach(ing num: nums) 的num
- separator 指定遍历分隔符
- open foreach语句的前缀字符串
- close foreach语句的后缀字符串
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(List Ids,List users){){ ... mapper = sqlSessin.getMapper(..); mapper.delete( @Param("ids") Ids ) '注意!这里要用Param标记,因为传入的是集合 mybatis 默认以param0..为键' mapper.insert( @Param("users") users ) } ---------------------------------- // .xml中 '实现批量添加 insert into values (...),(...) 语句' delete from user '设置Param后Ids才查找的到' ---------------------------------- '实现批量添加 insert into values (...),(...).. 语句'#{id} '开启userGenerateKeys主键自动递增' insert into values '每个都要用逗号隔开' (null, user.username, user.depId, ...)
最后一个动态sql标签啦!
-
作用就是可以绑定指定的sql语句,使用时直接贴标签即可(怎么样!是不是很方便)
-
当使用时,使用 inculde标签 进行引用 并 设置 对refid属性赋上sql标签id值
-
// .java中: class User{ //员工表 id; username; password; depId; } Listselect(int depid,String username){ ... mapper = sqlSessin.getMapper(..); List users = mapper.select(); } ---------------------------------- // .xml中 '用于绑定sql' id, username, password, depId select from user



