一.便于区分相同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);
网友评论