关于mybatis 的mapper namespace 作用及解析

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

posted @ 2022-03-15 16:49  只要努力就不晚  阅读(893)  评论(0编辑  收藏  举报