在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以更加直观的展现出mybatis动态代理替我们所做的工作,有利于我们理解动态代理的过程,讲解完以后我们再进行动态代理的原理解析,此讲解基于mybatis的环境已经搭建完成,并且已经实现了基本的用户类编写以及用户类的Dao接口的声明,下面是Dao层的接口代码
1 public interface UserDao { 2 /* 3 查询所有用户信息 4 */ 5 List<User> findAll(); 6 7 /** 8 * 保存用户 9 * @param user 10 */ 11 void save(User user); 12 13 /** 14 * 更新用户 15 * @return 16 */ 17 void update(User user); 18 /** 19 * 删除用户 20 */ 21 void delete(Integer userId); 22 23 /** 24 * 查找一个用户 25 * @param userId 26 * @return 27 */ 28 User findOne(Integer userId); 29 30 /** 31 * 根据名字模糊查询 32 * @param name 33 * @return 34 */ 35 List<User> findByName(String name); 36 /** 37 * 根据组合对象进行模糊查询 38 * @param vo 39 * @return 40 */ 41 List<User> findByQueryVo(QueryVo vo); 42 }