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