mappers:映射器,以最佳的方式是告诉 MyBatis 到哪里去找映射文件。
<!-- 使用相对于类路径的资源引用,要满足一个条件:1.即映射文件只要放在类路径下,就可以根据相对路径找到,放在resourses(设置为了内部资源的文件夹)目录下即可。
<mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="IStudentDao.xml"/> </mappers>
映射文件可以和Dao接口不在同一个包下
映射文件名可以和Dao接口的简单类名不相同
映射文件的<mapper/>标签的namespace的值可以谁便写:<mapper namespace="xxx"></mapper>;但是这一点注意,如果你要用log4j的话,还是把namespace的值写成Dao接口
<!-- 使用完全限定资源定位符(URL) url可以注册在本地磁盘上的映射文件,不常用-->
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!--
使用下面的注册方式需要满足以下三点要求:
1) 映射文件要与Dao接口在同一个包下
2) 映射文件名要与Dao接口的简单类名相同
3) 映射文件的<mapper/>标签的namespace属性值为Dao接口的全限定性类名
满足以上三个条件,那么这里的class属性值就可以填写Dao接口的全限定性类名
-->
<mapper class="com.abc.dao.IStudentDao"/>
<!--
使用下面的注册方式需要满足以下四点要求:
1) 映射文件要与Dao接口在同一个包下
2) 映射文件名要与Dao接口的简单类名相同
3) 映射文件的<mapper/>标签的namespace属性值为Dao接口的全限定性类名
4) 使用动态Mapper
满足以上四个条件,那么这里的name属性值就可以填写Dao接口所在的包名
-->
<package name="com.abc.dao"/>
注意:
1、当采用class、package方式时,映射文件(Mapper.xml)和接口必须命名相同,并且放在与接口同一目录下。(尽量不要采用这种方法)
2、当采用class方式时,没有SQL映射文件,所有的SQL都是利用注解写在接口上,这样就可以避免注意1的事情发生,提高维护性,不是很重要的SQL语句可以采用注解的方式,这样可以提高开发速度,重要和复杂的接口、SQL建议还是采用SQL映射文件的方式。(尽量采用这种方法)