MyBatis 的 namespace 就是 SQL 映射文件对应的唯一标识。
主要用于做以下事情:
- 区分映射语句。
- 逐步构建加载语句。
- 引用 SQL 片段。
每个 namespace 会对应一个 Java 的 Mapper 接口。
举个例子:
UserMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itzhimei.mapper.UserMapper">
<select id="selectUser" resultType="com.itzhimei.pojo.User">
select * from user where id = #{id}
</select>
</mapper>
对应的接口:
public interface UserMapper {
User selectUser(int id);
}
这里的 namespace 为:”com.itzhimei.mapper.UserMapper”
它主要用在:
- 映射语句中引用参数:
#{namespace.parameter}
#{com.itzhimei.mapper.UserMapper.id}
- 引用结果集:
<resultMap type="namespace.type" />
<resultMap type="com.itzhimei.pojo.User" />
- 引用 SQL 片段:
<include refid="namespace.sql-fragment" />
所以,MyBatis 的 namespace 就相当于给 SQL 映射文件起一个唯一的名称,并通过它来引用参数、结果集和 SQL 片段。