<sqlMap namespace="User">
映射文件的根节点是<sqlMap>。namespace是该<sqlMap>的命名空间,因为SQL Map映射文件可以有多个,而对于SQL Map来说所有映射文件都是全局性的。这意味着在SQL Map中的标识只能是惟一的,利用namespace和标识的全限定名就可以进行区别,前提是,配置文件中的 useStatementNamespaces属性必须设置为true。
网上的解释是这样的,但我想了解它的工作过程和具体是怎样使用的。
在DAO层调用statement时,怎样确定它是属于哪个namespace之下的呢?
例如有两个sqlMap
<sqlMap namespace="User">
<sqlMap namespace="branch">
在这两个sqlMap下都有一个id为"getUser"的statement,那么我在一个branchDAOImpl里调用
getSqlMapClientTemplate("getUser");那么怎样确定它是属于<sqlMap namespace="User">还是<sqlMap namespace="branch">呢?
映射文件的根节点是<sqlMap>。namespace是该<sqlMap>的命名空间,因为SQL Map映射文件可以有多个,而对于SQL Map来说所有映射文件都是全局性的。这意味着在SQL Map中的标识只能是惟一的,利用namespace和标识的全限定名就可以进行区别,前提是,配置文件中的 useStatementNamespaces属性必须设置为true。
网上的解释是这样的,但我想了解它的工作过程和具体是怎样使用的。
在DAO层调用statement时,怎样确定它是属于哪个namespace之下的呢?
例如有两个sqlMap
<sqlMap namespace="User">
<sqlMap namespace="branch">
在这两个sqlMap下都有一个id为"getUser"的statement,那么我在一个branchDAOImpl里调用
getSqlMapClientTemplate("getUser");那么怎样确定它是属于<sqlMap namespace="User">还是<sqlMap namespace="branch">呢?
刚才查看过配置文件 useStatementNamespaces="false" ,假若useStatementNamespaces=true 那么应该怎样做呢,
可否举个例子呢?
调用时必须xxx.getUSer是什么意思呢?那个调用是什么时候的调用?
如果 ID 是不能相同的,那么namespace的意义何在?
实在是太迷茫了。
调用那时是getSqlMapClientTemplate().queryForList("User.getUser");是不?
事实上,id 可以相同的,只要不在同一namespace下就可以了,是不?
有时看文档,自己理解了,但还是有点不太确定自己的理解是否正确,有个人make sure一下,心里会踏实一些。。