使用动态代理的目标是可以不用书写实现类,只需要书写接口和mapper.xml即可完成crud的操作
也就是只需要写接口,不用写实现类(类似于dao层和impl层,使用动态代理的话,只需要写dao层,impl使用)
第一:名称空间的命名
mapper.xml 根标签的 namespace 属性
如果使用到了动态代理接口,就需要namespace 中的值,和需要对应的Mapper(dao)接口的全路径一致(也就是包名.接口名)
第二:sql标签方法的id命名
这个id名,应该和接口当中的相对应调用sql操作方法的名字一样
第三:在实现调用接口的时候进行方法处理
//获取mapper的动态代理实现类
private UserMapper userMapper;//这个是接口
private SqlSession sqlSession;// 定义成全局的对象
String resource = "mybatis-config.xml";
// 读取xml配置文件
InputStream is = Resources.getResourceAsStream(resource);
// 构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
// 打开SqlSession,得到sqlSession可以进行curd的操作
sqlSession = sqlSessionFactory.openSession();
// 获取mapper的动态代理实现类
userMapper = sqlSession.getMapper(UserMapper.class);
具体例如:
总结: