mybatis注册映射sql的Mapper的三种方式详解
1.<mappers>配置于全局配置文件的<configuration>节点下,代码如下:
<!-- 一定要将写好的sql映射文件注册到全局配置文件中 -->
<!-- mapper:注册一个sql映射
resource:引入类路径(编译后以classes为跟的路径)下的资源
如:com/test/xxMapper.xml
URL:引入网络或磁盘路径下的资源
如:file:///var//mappers//xxMapper.xml
class:引用(注册)接口;
1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
2.没有sql映射文件,所有的sql都是基于注解写在接口上。
-->
<mappers>
<!-- 方式一:通过映射文件注册 Mapper-->
<!-- 通过mapper元素的resource属性可以指定一个相对于类路径的Mapper.xml文件 -->
<mapper resource="com/mapper/EmployeeMapper.xml" />
<!-- 通过mapper元素的url属性可以指定一个通过URL请求道的Mapper.xml文件 -->
<!-- <mapper url="file:///E:/UserMapper.xml"/> -->
<!-- 方式二:通过mapper元素的class属性可以指定一个Mapper接口进行注册 -->
<!-- 基于映射文件的接口。有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下 -->
<!-- <mapper class="com.mapper.EmployeeMapper"/> -->
<!-- 基于注解的接口。没有sql映射文件,所有的sql都是基于注解写在接口上。 -->
<!-- <mapper class="com.mapper.EmployeeMapperAnnotation"/> -->
<!-- 方式三:通过package元素将会把指定包下面的所有Mapper接口进行注册
批量注册 :基于映射文件的接口与映射文件必须在同一个包下
name:包的全类名 -->
<!-- <package name="com.tiantian.mybatis.mapperinterface"/> -->
<package name="com.mapper"/>
</mappers>
2.基于注解的mapper接口。
基于注解的mapper接口不需要sql映射文件,所有的sql都是基于注解写在接口上,代码如下:
public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id = #{id}")
public Employee getEmpById(Integer id);
}