映射器是 MyBatis 中最重要的文件,文件中包含一组 SQL 语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射 SQL 语句。
映射器由 Java 接口和 XML 文件(或注解)共同组成,它的作用如下。
- 定义参数类型
- 配置缓存
- 提供 SQL 语句和动态 SQL
- 定义查询结果和 POJO 的映射关系
映射器有以下两种实现方式。
- 通过 XML 文件方式实现,比如我们在 mybatis-config.xml 文件中描述的 XML 文件,用来生成 mapper。
- 通过注解的方式实现,使用 Configuration 对象注册 Mapper 接口。
如果 SQL 语句存在动态 SQL 或者比较复杂,使用注解写在 Java 文件里可读性差,且增加了维护的成本。所以一般建议使用 XML 文件配置的方式,避免重复编写 SQL 语句。
XML实现映射器
XML 定义映射器分为两个部分:接口和XML。下面先定义接口 WebsiteMapper(本节基于《第一个MyBatis程序》中的示例实现)。
MyBatis 映射器的主要元素
下面介绍在映射器中可以定义哪些元素,以及它们的作用。
拓展
关于 MyBatis 的 SQL 映射文件中的 mapper 元素的 namescape 属性有如下要求。
- namescape 的命名必须跟某个 DAO 接口同名,同属于 DAO 层,因此代码结构上,映射文件与该接口应放置在同一 package 下(如 net.biancheng.dao.website),并且习惯上是以 Mapper 结尾(如 WebsiteMapper.java、WebsiteMapper.xml)。
- 不同的 mapper 文件中子元素的 id 可以相同,MyBatis 通过 namescape 和子元素的 id 联合区分。接口中的方法与映射文件中的 SQL 语句 id 应一 一对应。