1.什么是mapper的动态映射?
在之前的程序中,可以发现,真正实现方法的是mapper文件中相应的sql语句
在Mapper的动态代理方式中,程序员无需实现Dao接口,接口是由MyBatis结合映射文件自动生成的动态代理实现的
2.mapper动态映射实例
1.Dao接口
需要注意,此处Dao接口的方法名要与mapper文件中的 id保持一致,这样才能正确生成实现类
package rodisland;
public interface Dao
{
Student selectStudentById(int id);
}
2.修改mapper映射文件
<mapper namespace="rodisland.Dao">
namespace需要改成Dao接口的全类名
若之前的log4j配置文件中,限定了namespace,需要保持一致
3.删除之前实现类,修改测试类
package test;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import rodisland.Dao;
import rodisland.MyBatisUtil;
import rodisland.Student;
public class Mytest
{
private Dao dao;
private SqlSession session;
//getSession
@Before
public void before()
{
session=MyBatisUtil.getSqlSession();
dao=session.getMapper(Dao.class);
}
//close session
@After
public void after()
{
if(session !=null)
session.close();
}
@Test
public void Test07()
{
Student student=dao.selectStudentById(10);
System.out.println(student);
}
}
获得实现类的方法:
dao=session.getMapper(Dao.class);