在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>