dao层开发mybatis和动态代理
传统dao执行select语句
实体类
dao接口
dao执行insert语句
dao接口的实现类
测试
动态代理条件分析
List<Student> studentList = dao.selectStudent();调用
1.dao对象,类型是StudentDao,全限定名称是:com.song.dao.StudentDao
全限定名称和sql映射文件中namespace是一样的。
2.方法名称,selectStudent,这个方法就是sql映射文件中的id值selectStudent
3.通过dao中方法的返回值也也可以确定mybatis要调用的是SqlSession 的方法。
如果返回值是List,调用的是SqlSession.selectList()方法
如果返回值是int,或者非List的,看mapper文件中的标签,标签是<insert>,<update>就会调用sqlSession的insert,update等方法
mybatis根据dao的方法调用,获取执行sql语句的信息
mybatis根据你的dao接口,创建出一个dao接口的实现类,并创建这个类的对象
完成SqlSession调用方法,访问数据库。
动态代理的实现。(不需要接口实现类)
SqlSession.getMapper();
使用mybatis的动态代理机制,使用SqlSession.getMapper(dao接口)
getMapper能获取dao接口对于的实现类对象
1.dao对象,类型是StudentDao,全限定名称是:com.song.dao.StudentDao
全限定名称和sql映射文件中namespace是一样的。
2.方法名称,selectStudent,这个方法就是sql映射文件中的id值selectStudent
3.通过dao中方法的返回值也也可以确定mybatis要调用的是SqlSession 的方法。
如果返回值是List,调用的是SqlSession.selectList()方法
如果返回值是int,或者非List的,看mapper文件中的标签,标签是<insert>,<update>就会调用sqlSession的insert,update等方法
mybatis的动态代理:
mybatis根据dao的方法调用,获取执行sql语句的信息mybatis根据你的dao接口,创建出一个dao接口的实现类,并创建这个类的对象
完成SqlSession调用方法,访问数据库。
动态代理的实现。(不需要接口实现类)
SqlSession.getMapper();
使用mybatis的动态代理机制,使用SqlSession.getMapper(dao接口)
getMapper能获取dao接口对于的实现类对象