dao的实现类其实并没有做什么实质性的工作,仅仅是通过sqlSession的相关API定位到StudentMapper映射文件中的ID中的sql语句,其实真正操作DB的是mapper中的sql。所以mybatis就抛开了dao层的实现类,可以直接定位到mapper中的sql!然后执行sql对DB进行操作!这种对dao的实现方式我们称为Mapper的动态代理方式!
Mapper接口开发需要遵循以下规范:
1、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
5、 注册映射文件 使用class的方式 注册接口
调用mapper中的方法
@Test
public void insertTest() throws IOException {
// 通过session的getMapper方法 来获取Mapper的对象
SqlSession session = MBUtils.getSession();
EmpMapper mapper = session.getMapper(EmpMapper.class);
Emp emp = new Emp();
emp.setEname("李四");
emp.setJob("架构师");
emp.setSal(25000.00);
mapper.insertEmp(emp);
// 此时该对象的主键就有值了
session.commit();
System.out.println(emp.getEmpno());
}