mybatis 中mapper 的namespace有什麼用?
我自己定義的一個sql語句配置 可是我不懂這裡的namespace有什麼用
<mapper namespace="com.myweb.domain.Article">
<select id="selectAllArticle" resultType="article">
SELECT t.* FROM T_article t WHERE t.flag = '1' ORDER BY t.createtime DESC
</select>
第二個與之相關的問題 我定義的實現類
@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<Article> selectAllArticle();
}
對於對映檔案如下:
<mapper namespace="IArticleDAO">
<select id="selectAllArticle" resultType="article">
SELECT t.* FROM T_article t WHERE t.flag = '1' ORDER BY t.createtime DESC
</select>
請注意介面中的方法與對映檔案中的SQL語句的ID一 一對應 。
則在程式碼中可以直接使用IArticeDAO面向介面程式設計而不需要再編寫實現類。
相關文章
- Mybatis的Mapper中的方法為什麼不能過載?MyBatisAPP
- mybatis中@Mapper使用介紹MyBatisAPP
- C++中檔案開頭寫的 using namespace std 有什麼作用?C++namespace
- Java 中的Exception 有什麼用?JavaException
- Mybatis中mapper檔案中的兩層迴圈MyBatisAPP
- mybatis的外掛:mapperMyBatisAPP
- mybatis mapper解析(4)MyBatisAPP
- 剔除Intellij中Mybatis的Mapper自動注入警告IntelliJMyBatisAPP
- Linux中虛擬化是什麼?有什麼用?Linux
- Linux中man命令有什麼用?Linux
- MyBatis外掛 - 通用mapperMyBatisAPP
- Oracle ASM有什麼用?為什麼用?OracleASM
- mybatis的mapper.xml用條件判斷做轉譯MyBatisAPPXML
- FactoryBean有什麼用Bean
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML
- 自動生成Mybatis的Mapper檔案MyBatisAPP
- python中print()有什麼用?常用引數有哪些?Python
- NLA有什麼用?原理是什麼?
- MyBatis 原始dao與mapper代理MyBatisAPP
- MyBatis外掛使用–通用MapperMyBatisAPP
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- mybatis的mapper的特殊符號處理MyBatisAPP符號
- css--BFC是什麼,有什麼用,怎麼用?CSS
- Java 中 final 關鍵字有什麼用Java
- 根證書是什麼?有什麼用?
- 兩張圖徹底搞懂MyBatis的Mapper原理!MyBatisAPP
- QT中namespaceQTnamespace
- mybatis通用mapper原始碼解析(二)MyBatisAPP原始碼
- mybatis通用mapper原始碼解析(一)MyBatisAPP原始碼
- Linux系統中net目錄有什麼用?Linux
- httpdns是個什麼技術,有什麼用httpdDNS
- RFM是什麼?這個模型有什麼用?模型
- 我們為什麼會刪除不了叢集的 Namespace?namespace
- mybatis中 mapper.xml檔案中,獲取陣列中指定的位置的資料MyBatisAPPXML陣列
- JQuery中$(document)是什麼意思有什麼作用jQuery
- Linux中什麼是inode?有什麼作用?Linux
- 【肥朝】圖解原始碼 | MyBatis的Mapper原理圖解原始碼MyBatisAPP
- 開發一個MyBatis通用Mapper的輪子MyBatisAPP