关于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>

链接:https://blog.csdn.net/m0_38088420/article/details/106056519

==========================================

Mybatis中mapper的实现原理 

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的)

 

posted @   emanlee  阅读(3053)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
历史上的今天:
2021-02-07 Support Vector Regression(SVR) 资料
2015-02-07 mysql删除重复记录
2015-02-07 python去掉行尾的换行符
2011-02-07 理解商集
2010-02-07 安装 IE8 Internet Explorer 8.0
2010-02-07 关于Microsoft Virtual PC 2007安装使用
点击右上角即可分享
微信分享提示