MyBatis
- MyBatis是一个半自动的映射框架,之所以称为半自动,是因为它需要手工匹配提供的POJO、SQL、和映射关系,而Hibernate只需提供POJO和映射关系即可。
动态SQL
- 动态 SQL,主要用于解决查询条件不确定的情况:在程序运行期间,根据用户提交的查询条件进行查询。提交的查询条件不同,执行的 SQL 语句不同。若将每种可能的情况均逐一列出,对所有条件进行排列组合,将会出现大量的 SQL 语句。此时,可使用动态 SQL 来解决这样的问题。
即通过 MyBatis 提供的各种标签对条件作出判断以实现动态拼接 SQL 语句。
If
- 需求:我们现在做用户查询,有可能带用户名,有可能不带
- 查询的时候,给了不给username的值,来观察结果
where
trim
- 替换的作用
属性 | 描述 |
---|---|
prefix | 给sql语句拼接的前缀 |
suffix | 给sql语句拼接的后缀 |
prefixOverrides | 去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该属性指定为"AND",当sql语句的开头为"AND",trim标签将会去除该"AND" |
suffixOverrides | 去除sql语句后面的关键字或者字符,该关键字或者字符由suffixOverrides属性指定 |
choose、when、otherwise
- 多个查询条件同时出现的时候,排优先级
If …elseif…else
Set
- 假如一个表有多个字段,但我只需要更新需要更新的字段,减少网络带宽
foreach
- 案例,我们做批量的删除或更新
方式一,以整型数组的方式
- 方式二:以集合的方式
- 方式三:以map的方式