Mapper动态代理解析

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());
}

你可能感兴趣的:(mybatis,java)