MyBatis 动态代理--解决namespace +id 的重复操作

在我们上一节 中实现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();
   }

发布了69 篇原创文章 · 获赞 5 · 访问量 2226

猜你喜欢

转载自blog.csdn.net/qq_42139889/article/details/103254558