欢迎光临散文网 会员登陆 & 注册

XML映射文件、Mybatis动态SQL

2023-04-04 15:23 作者:苏喆i  | 我要投稿

XML映射文件

规范:

  • XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。

  • XML映射文件的namespace属性为Mapper接口全限定名一致。

  • XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。

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>


XML映射文件、Mybatis动态SQL的评论 (共 条)

分享到微博请遵守国家法律