原始dao开发以及mapper动态代理开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ilikejj0/article/details/82686397

原始dao开发:

原始dao开发思路比较简单,写个dao接口和dao实现类即可。需要向dao实现类中注入sqlSessionFactory,在方法体内通过sqlSessionFactory创建sqlSession。操作完成之后,关闭资源。为什么在方法体内创建呢?因为mybatis中sqlSession是线程不安全的。如果在方法外面以成员变量的方式创建,可能会引发线程安全问题。

原始dao开发存在的问题

1 dao接口实现类方法中存在大量重复代码,从设计上来看,应该抽取。
2 调用sqlSession方法时,将satement的id硬编码了,即类似于”test.findUserById”这种,都写死了。
3 sqlSession的方法中,要求传入的参数是Object类型的(泛型),也就是说如果我传错了参数,编译不会报错,执行的时候才会报错,不利于开发。

Mapper动态代理

Mapper接口开发方式是基于入门程序的基础上,对 控制程序 进行分层开发,程序员只需要 编写mapper接口 和 Mappe.xml 配置文件即可,程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

开发规范

程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。相关的开发规范如下:

① 在mapper.xml中namespace等于mapper接口地址

② 接口中的方法名和mapper.xml中statement的id一致

③ 接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致

④ 接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致

mapper动态代理实现原理

动态代理实现原理

猜你喜欢

转载自blog.csdn.net/ilikejj0/article/details/82686397