<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<!-- 6、mappers:将sql映射注册到全局配置中 -->
<mappers>
<!--
mapper:注册一个sql映射
注册配置文件
resource:引用类路径下的sql映射文件
mybatis/mapper/EmployeeMapper.xml
url:引用网路路径或者磁盘路径下的sql映射文件
file:///var/mappers/AuthorMapper.xml
注册接口
class:引用(注册)接口,
1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
2、没有sql映射文件,所有的sql都是利用注解写在接口上;
-->
<!--
像下面这种是在conf中新建一个mybatis.mapper的包,用来存放sql映射文件,这样就不会显得零散了
<mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
-->
<!--
这种是基于注解的,基于注解就可以不用写sql映射文件了
<mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/>
-->
<!-- 批量注册: 批量注册时在有sql映射文件的情况下,映射文件名必须和接口同名,并且放在与接口同一目录下-->
<package name="com.atguigu.mybatis.dao"/>
</mappers>
推荐:
比较重要的,复杂的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解;
基于注解的接口
EmployeeMapperAnnotation.java
:
package com.atguigu.mybatis.dao;
import org.apache.ibatis.annotations.Select;
import com.atguigu.mybatis.bean.Employee;
public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}
测试:
@Test
public void test02() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapperAnnotation mapper = openSession.getMapper(EmployeeMapperAnnotation.class);
Employee empById = mapper.getEmpById();
System.out.println(empById);
}finally{
openSession.close();
}
}
得出的查询结果是正确的
批量注册时在有sql映射文件的情况下,映射文件名必须和接口同名,并且放在与接口同一目录下
如果想在视觉效果上好看我们可以在conf中新建一个与
com.atguigu.mybatis.dao
一样名字的包,把SQL映射文件放到里面,这样src下就不用放SQL映射文件而显得不好看了
