mybatis3之后,采用了功能强大的OGNL表达式语言消除了许多其它繁琐的标签,现在动态SQL在xml中支持的几种标签:
- if
- choose(when、otherwise)
- trim(where、set)
- foreach
- bind
一.if标签
if标签通常用于where语句中,通过判断参数值来决定是否使用某个查询条件,它也经常用于UPDATE语句中判断是否更新某一个字段,还可以再INSERT语句中用来判断是否插入某个字段的值。
1.1 在where条件中使用if
用法:含义就是当if满足时,就执行标签体中的内容。
需求:准备如下数据表,当只输入用户名的时候,就根据这个用户名进行模糊查询匹配的用户;当只输入邮箱时,就根据邮箱完全匹配用户胡;当两者都同时输入时,就需要用这两个条件去查询匹配的用户。
表格:
贴下关键代码:
(1)controller
@PostMapping("/selectByUser") public List<SysUser> selectByUser(){ SysUser sysUser=new SysUser(); sysUser.setUserName("tes"); return userService.selectByUser(sysUser); }
说明:这里只传入了userName。而userEmail为null
(2)service实现类
1 @Override 2 public List<SysUser> selectByUser(SysUser sysUser) { 3 return userMapper.selectByUser(sysUser); 4 }