SQL映射文件中namespace命名空间的作用

2019-04-06  本文已影响0人  问瑾遗

一.便于区分相同id的SQL操作

当多个xxxMapper.xml文件中的id值相同时,在使用SqlSession操作数据库时,mybatis就无法分辨我们要调用的哪个id的操作。在调用时采用“namespace.id”的方式便有利于区分。

举例如下:
xxxMapper.xml

<mapper namespace="AAA">
        <select id="xxx" resultType="???">
            sql语句    
        </select>
</mapper>

yyyMapper.xml

<mapper namespace="BBB">
        <select id="xxx" resultType="???">
            sql语句    
        </select>
</mapper>

SqlSession调用:

sqlSession.selectList("AAA.xxx");
//或是
sqlSession.selectList("BBB.xxx");

二. “接口-SQL映射”功能中namespace对应包名和接口名

前面写代码时我们使用sqlSession.selectList("SQLID"),完全是在面向String字符串类型的SQLID编程,虽然能达到操作数据库的目的,但这种代码写法是不规范的。理想中规范的写法是面向接口编程。MyBatis提供了“接口-SQL映射”的功能。
还记得使用MyBatis Generator工具操作MySQL数据库示例中生成的xxxMapper.xml与xxxMapper.java文件,两者是对应的,这就是“接口-SQL映射”。
两者对应关系示例如下:

//namespace对应包名和接口名
//xxxMapper.xml
<mapper namespace="mapping.UserinfoMapper">
//xxxMapper.java
package mapping;
public interface UserinfoMapper {}
//id对应方法名,parameterType对应参数类型
//xxxMapper.xml
<insert id="insert" parameterType="bean.Userinfo">
//xxxMapper.java
int insert(Userinfo record);

参看:使用getMapper()面向接口编程

上一篇下一篇

猜你喜欢

热点阅读