1. 程式人生 > >Mybatis中namespace的作用

Mybatis中namespace的作用

注意mapper的namespace的名字是mapper物件的完整路徑名com.xiamen.mapper.PersonMapper(這樣session就可以getMapper了)
因為mybatis的作用就是:使得介面繫結成為可能

mybatis 中mapper 的namespace有什麼用:

我自己定義的一個sql語句配置 可是我不懂這裡的namespace有什麼用


SELECT t.* FROM T_article t WHERE t.flag = ‘1’ ORDER BY t.createtime DESC

第二個與之相關的問題 我定義的實現類
@Repository
public class ArticleDaoImpl implements ArticleDao {

@Autowired
private SqlSessionTemplate sqlSessionTemplate;
public List<Article> findAll() {
    return sqlSessionTemplate.selectList("selectAllArticle");
}

}
請問 sqlSessionTemplate.selectList(“selectAllArticle”); 為什麼會呼叫Artice.xml檔案的selectAllArticle,是根據ID呼叫的嗎? 如果在其他XMl檔案採用一樣的 id為 selectAllArticle 那程式應該會呼叫哪個? 我想應該會報錯,所以想問一下這裡namespace的作用。 我現在把namespace改成任意的一個值比如com.myweb.domain.aa 程式也不會出錯。
查閱了mybatis的相關文件說 名稱空間使得介面繫結成為可能 可是在這裡應該如何理解。 請高手幫忙解釋一下

樓主:
在mybatis中,對映檔案中的namespace是用於繫結Dao介面的,即面向介面程式設計。
當你的namespace繫結介面後,你可以不用寫介面實現類,mybatis會通過該繫結自動
幫你找到對應要執行的SQL語句,如下:
假設定義了IArticeDAO介面
public interface IArticleDAO
{
List

selectAllArticle();
}

對於對映檔案如下:


SELECT t.* FROM T_article t WHERE t.flag = ‘1’ ORDER BY t.createtime DESC

請注意介面中的方法與對映檔案中的SQL語句的ID一一對應 。
則在程式碼中可以直接使用IArticeDAO面向介面程式設計而不需要再編寫實現類。

使得面向介面程式設計成為可能?