XML映射文件、Mybatis动态SQL

XML映射文件
规范:
XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。
XML映射文件的namespace属性为Mapper接口全限定名一致。
XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。

XML映射文件:

MybatisX 是一款基于 IDEA 的快速开发Mybatis的插件,为效率而生。

使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。
官方说明:https://mybatis.net.cn/getting-started.html
官方文档说道:
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。
选择何种方式来配置映射,以及认为是否应该要统一映射语句定义的形式,完全取决于你和你的团队。 换句话说,永远不要拘泥于一种方式,你可以很轻松的在基于注解和 XML 的语句映射方式间自由移植和切换。

小结:
XML映射文件定义规范:
XML文件的名称与Mapper接口名称一致,并且放置在相同包下(同包同名)。
XML文件的namespace属性为Mapper接口全限定名一致。
XML文件中sql语句的id与Mapper 接口中的方法名一致。

Mybatis动态SQL
动态SQL
随着用户的输入或外部条件的变化而变化的SQL语句,我们称为动态SQL。
<if>
<foreach>
<sql><include>

<if>
<if>:用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。
<where>:where 元素只会在子元素有内容的情况下才插入where子句。而且会自动去除子句的开头的AND 或OR。

案例:完善更新员工功能,修改为动态更新员工数据信息
要求:动态更新员工信息,如果更新时传递有值,则更新;如果更新时没有传递值,则不更新。
接口方法:
XML映射文件:
<set>:动态地在行首插入 SET 关键字,并会删掉额外的逗号。(用在update语句中)

小结:
<if>
用于判断条件是否成立,如果条件为true,则拼接SQL。
形式:<if test="name != null">…</if>
<where>
where 元素只会在子元素有内容的情况下才插入where子句,而且会自动去除子句的开头的AND 或OR
<set>
动态地在行首插入 SET 关键字,并会删掉额外的逗号。(用在update语句中)

<foreach>
SQL语句:
接口方法:
XML映射文件:
collection:集合名称
item:集合遍历出来的元素/项
separator:每一次遍历使用的分隔符
open:遍历开始前拼接的片段
close:遍历结束后拼接的片段
测试方法:

<sql><include>

sql片段
<sql>:定义可重用的 SQL 片段。
<include>:通过属性refid,指定包含的sql片段。

总结
1.XML映射文件
映射配置文件名与Mapper接口名一致,且放在相同的包下(同包同名)。
映射配置文件的namespace属性与Mapper接口的全类名一致。
XML映射文件中sql语句的id与Mapper 接口中的方法名一致。
2.动态SQL
<if>
<where>
<set>
<foreach>
<sql>
<include>