传统Dao
1:传统DAO需要接口,需要实现类
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
User user =sqlSession.selectOne("getUserById",id);
sqlSession.close();
实现类需要sqlSession.selectOne(“getUserById”,id),传统dao的问题就是当xml中的id变动的时候,需要在实现类中去修改代码,当成很大的不方便。
2:动态代理dao只要接口不再需要实现类,只要保证xml中的id和接口的方法名一直,所以只要改接口的方法名和xml中的id名字对应就可以了,大大增加了代码的灵活性。耦合度低
动态代理dao开发规则
- namespace必需是接口的全路径名
- 接口的方法名必需与映射文件的sql id一致
- 接口的输入参数必需与映射文件的parameterType类型一致
- 接口的返回类型必须与映射文件的resultType类型一致
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(30);
System.out.println(user);
sqlSession.close();