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
- mybatis的外掛:mapperMyBatisAPP
- 剔除Intellij中Mybatis的Mapper自動注入警告IntelliJMyBatisAPP
- mybatis mapper解析(4)MyBatisAPP
- Java 中的Exception 有什麼用?JavaException
- MyBatis外掛 - 通用mapperMyBatisAPP
- 自動生成Mybatis的Mapper檔案MyBatisAPP
- Linux中man命令有什麼用?Linux
- Linux中虛擬化是什麼?有什麼用?Linux
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML
- mybatis通用mapper原始碼解析(一)MyBatisAPP原始碼
- mybatis通用mapper原始碼解析(二)MyBatisAPP原始碼
- CRM什麼意思?有什麼用?
- python中print()有什麼用?常用引數有哪些?Python
- 開發一個MyBatis通用Mapper的輪子MyBatisAPP
- 兩張圖徹底搞懂MyBatis的Mapper原理!MyBatisAPP
- 【肥朝】圖解原始碼 | MyBatis的Mapper原理圖解原始碼MyBatisAPP
- QT中namespaceQTnamespace
- Java 中 final 關鍵字有什麼用Java
- FactoryBean有什麼用Bean
- mybatis mapper.xml批次刪除操作MyBatisAPPXML
- Spring Boot整合MyBatis實現通用MapperSpring BootMyBatisAPP
- NLA有什麼用?原理是什麼?
- RDP是什麼意思?有什麼用?
- LDAP是什麼意思?有什麼用?LDA
- 什麼是高防?有什麼用?
- css--BFC是什麼,有什麼用,怎麼用?CSS
- 我們為什麼會刪除不了叢集的 Namespace?namespace
- 最全MyBatis中XML對映檔案(Mapper)標籤分析及示例MyBatisXMLAPP
- Linux系統中net目錄有什麼用?Linux
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- Spring+Mybatis(一)無mapper.xml方式SpringMyBatisAPPXML
- Mybatis1.1——使用mapper代理開發daoMyBatisAPP
- Python是什麼意思?Python有什麼用?Python
- 根證書是什麼?有什麼用?
- 助記詞是什麼,有什麼用?