说说我对mybatis框架的理解
1) 首先,框架由一系列的jar组成,其本质是对jdk的拓展,也是一组程序的集合.(类,接口等等的集合.),是解决某一领域的最佳实践,而mybatis就是解决数据访问层的最佳实践.(what)
2)为什么会有mybatis框架呢?
(a)不用mybatis框架,我们通过Java代码访问数据库时,一般都是这些步骤:加载注册驱动,获取连接对象,获取语句对象,执行sql语句,释放资源.通过java代码,来访问数据库,就一定需要这五步,这也是Java中jdbc的规范,只能通过这种方式.所以,无论是什么数据库,都必须遵守这个规范去封装.(而本身规范就好比一个接口,不关注实现的细节.)所以,这也是为什么mysql数据库有mysql的驱动包,oracle有oracle的驱动包.在java.sql包中,就是jdbc的api.(其本身,提供了很多接口,自身也实现了,这些接口.),而各大数据库厂商,根据java.sql的接口,去实现,也就造成了不同厂商,有着不同的驱动包.
(b)传统的jdbc,与数据库建立连接时,获取连接对象,这是每一次都会和数据库建立连接,是特别消耗资源的,那有没有解决的方式,?有,那就是连接池啦,javax.sq包,本身有连接池接口,pooledConnection但是很遗憾的是,没有提供实现.(埋下伏笔).在获取语句对象时,增删改的代码几乎一模一样,而查询单个和查询多个也几乎一模一样.,传统的jdbc存在大量代码重复.关闭资源也是.在增删改中,仅仅是sql语句不同,哪需要如何抽取呢?而且,在Java代码中,存在大量的sql语句,这本身就违背了Java语言的纯净性以及优雅性,同时,当需要改动时,需要去Java代码中修改sql语句,也会造成高的耦合性,正是由于这种原因,mybatis框架应运而生.
3)针对,,在Java代码中,存在大量的sql语句,这本身就违背了Java语言的纯净性以及优雅性,同时,当需要改动时,需要去Java代码中修改sql语句,也会造成高的耦合性.mybatis引入配置文件,解决耦合性问题.
针对,javax.sq包,本身有连接池接口,pooledConnection但是很遗憾的是,没有提供实现.提供连接池.mybatis自身已经存在连接池,如果需要可以引入DBCP,Druid等连接池.
也正是mybatis框架封装大量重复的代码,使程序员不用重复造轮子,而重点关注业务逻辑,提高开发效率.