mybatis学习7-传统dao层开发

前言

mybatis官方推荐使用mapper代理方式开发,程序员不用编写mapper接口实现类,

使用mapper代理方法时,输入参数可以使用pojo包装对象或map对象,保证dao的通用性;

传统的dao层开发容易出现硬编码的问题。

一、传统DAO层开发:

mybatis传统DAO层开发存在的问题:
1.dao接口中存在大量模版方法,增加工作量。

2.调用sqlSession方法时将statement的id硬编码了

3.调用sqlSession传入的变量,由于sqlSession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序开发。

二、mapper代理开发Mapper接口:

mapper代理开发和传统开发主要的区别在于
1. 接口不用实现
2. mapper文件的namespace有意义,必须与mapper接口类路径一致。
3. Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
4. mapper接口方法名的输入和输出参数必须和mapper.xml中定义的类型一致。

其实学习完mapper代理开发之后,可能你还存在一个疑问,就是返回的结果如果是list,代理内部会怎么判断?

  • 代理内部会自动判断,如果返回list那么就调用sqlsession的selectlist方法,如果是对象,就调用sqlsession的selectone方法。

总结:mapper代理开发不用写实现类,节省了我们的代码量;mapper代理对象减少了我们的硬编码,使编码更加灵活。

---------------------------------------------------------------------------------------------------------------------------------------------------

 

下面是一个编写dao层实现类Mybatis的执行过程

 

参考:https://blog.csdn.net/changyinling520/article/details/78102734

posted @ 2019-08-06 02:21  匆匆、  阅读(274)  评论(0编辑  收藏  举报