在Mybatis中,映射文件中的namespace是用於綁定Dao接口的,即面向接口編程。
當你的namespace綁定接口后,就可以不用寫接口實現類,Mybatis會通過該綁定自動找到對應要執行的SQL語句,如下例子。
假設有個映射文件:
<mapper namespace="com.dao.IdCardDao"> <select id="selectCodeById" parameterType="Integer" resultType="com.po.Idcard"> select * from idcard where id=#{id} </select> </mapper>
這個時候我們可以只定義一個Dao接口就行,不用寫接口的實現類,需要時候調用Dao接口的方法就行:
package com.dao;
@Repository("idCardDao") @Mapper public interface IdCardDao { public Idcard selectCodeById(Integer i); }
==========================================
在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 </select> </mapper>
請注意接口中的方法與映射文件中的SQL語句的ID一一對應 。
則在代碼中可以直接使用IArticeDAO面向接口編程而不需要再編寫實現類。
==========================================
只有實體類,沒有接口類:
(https://blog.csdn.net/qq_28885149/article/details/51694733)
Mybatis的mapper標簽 namespace方法說明
有三種全路徑:
namespace綁定實體類的全路徑;
namespace綁定dao層接口的全路徑;
namespace綁定mapper接口的sql.xml文件。
第一種:namespace綁定實體類的全路徑:
當namespace綁定的是實體類的全路徑時,其實現數據持久化的方式為無代理模式實現數據持久化,可以手動實現dao層的接口。
<mapper namespace="com.system.entity.Book"></namespace>
第二種:namespace綁定dao層接口的全路徑:
當namespace綁定的是dao接口的全路徑時,其實現數據持久化的方式為有代理模式實現數據持久化,即會自動產生代理,自動實現數據的持久化,不需要實現dao層的接口。
<mapper namespace="com.system.dao.LiveInfoDao"></namespace>
第三種:namespace綁定mapper接口的sql.xml文件。
當namespace綁定的是mapper接口對應的sql.xml文件時,其也是有代理模式自動實現數據持久化。
<mapper namespace="com.system.mapper.BookMapper"></namespace>
鏈接:https://blog.csdn.net/m0_38088420/article/details/106056519
==========================================
https://www.cnblogs.com/emanlee/p/15870971.html
==========================================
REF
https://www.cnblogs.com/lixuwu/p/5900951.html
https://blog.csdn.net/m0_38088420/article/details/106056519 (Mybatis的mapper標簽 namespace方法說明)
https://www.cnblogs.com/qinhir/p/6236992.html
https://blog.csdn.net/zdb292034/article/details/82771965
https://cloud.tencent.com/developer/article/1455821
https://www.pianshen.com/article/2631885715/
https://www.oschina.net/question/1756518_2160115 (mybatis中的不同的namespace下面,為什么不能定義相同的id)
https://bbs.csdn.net/topics/392651697 (namespace到底寫mapper的包+mapper文件名還是寫dao的)