MyBatis5-动态 SQL

动态 SQL

什么是动态 SQL

就是动态的对 SQL 进行组装 拼接.

    

: 可以自动去掉条件中的第一个 and
注:中的 test 属性是 User 对象中的属性名,而且这里写的是java代码,而不是 SQL 语句(is not null).

类似的用于动态更新语句的解决方案叫做 set。set 元素可以被用于动态包含需要更新的列,而舍去其他的。比如:


  update Author
    
      username=#{username},
      password=#{password},
      email=#{email},
      bio=#{bio}
    
  where id=#{id}

知识拓展

综合查询

当我们查询的时候需要用到很多的查询条件,例如用户信息综合查询,查询条件可能包括用户信息,商品 订单的.
比如我们可以查询某用户买了哪些商品,还可以查询某些商品被哪些用户买了.

针对这些复杂的查询我们可以定义一个包装类userQueryVoVo指的是视图对象.

public class UserQueryVo {
    //此类可以包含User对象
    public User user;
    
    //或者商品  订单对象等
}

SQL 语句重用

    

    
    

当多条查询语句的where条件相同时,我们可以使用此方法.
: id 属性是sql重用代码 的唯一标识
: refid 属性引用SQL重用代码的标识,如果不在同一个mapper映射文件中,这需要添加namespace.
注:
1.基于表单定义SQL重用代码,提高代码重用性.
2.在SQL重用代码,不要包含where,因为有可能你的这条SQL重用代码,会包含在一个where中.

你可能感兴趣的:(MyBatis5-动态 SQL)