在我们上一节 中实现crud的代码中,显然有一处的代码 感觉很啰嗦
我们需要找xml中的namespace 又要 找其中的方法id 显然很麻烦。
MyBatis就给我们提供了方法来解决这一问题:动态代理
上面这就是动态代理,我们通过实现接口,然后就可以通过 点 来调用方法了,省去了 找namespace 和 id 的流程。
下面我们来看看 操作流程。
1.建一个接口类
package org.cjr.mapper;
import org.cjr.entity.Person;
public interface StudentMapper {
/*
* 1.方法名 与 mapper.xml ID 一样
* 2.输入参数 和 parameterType (输入值)一致
* 3.返回值与resultType (返回值)一致
* 接口的全类名 与 namespace 映射
*/
Person queryPersonById(int id);
}
此处应注意三点:
* 1.方法名 与 mapper.xml ID 一样
* 2.输入参数 和 parameterType (输入值)一致
* 3.返回值与resultType (返回值)一致
2.将xml 中的namespace 改为接口类的名字,实现绑定
<mapper namespace="org.cjr.mapper.StudentMapper">
3.测试类中 实现接口 并调用函数 完成测试
public static void queryStudentBySno() throws IOException {
Reader reader = Resources.getResourceAsReader("config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
/* 1.实现接口
* 2.然后接口文件的名称 与 xml中的namespace形成映射 自动绑定配置
*/
StudentMapper studentmapper = session.getMapper(StudentMapper.class);
Person person = studentmapper.queryPersonById(1);
System.err.println(person);
session.close();
}