一、 了解Mybais
1、历史(百度百科)
-
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
2、作用(百度百科)
-
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3、说说持久层
持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
-
程序产生的数据首先都是在内存。
-
内存是不可靠的,他丫的一断电数据就没了。
-
那可靠的存储地方是哪里,硬盘、U盘、光盘等。
-
我们的程序在运行时说的持久化通常就是指将内存的数据存在硬盘。
4、说说持久层
其实分层的概念已经谈到过,
-
业务是需要操作数据的
-
数据是在磁盘上的
-
具体业务调用具体的数据库操作,耦合度太高,复用性太差
-
将操作数据库的代码统一抽离出来,自然就形成了介于业务层和数据库中间的独立的层
5、聊聊ORM
ORM,即Object-Relational Mapping (对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
jpa (Java Persistence API)是java持久化规范,是orm框架的标准,主流orm框架都实现了这个标准。
hibernate:全自动的框架,强大、复杂、笨重、学习成本较高,不够灵活,实现了jpa规范。Java Persistence APl(Java持久层API)
Mybatis:半自动的框架(懂数据库的人才能操作)必须要自己写sql,不是依照的jpa规范实现的。
很多人青睐Mybatis,原因是其提供了便利的SQL操作,*度高,封装性好……JPA对复杂SQL的支持不好,没有实体关联的两个表要做join,的确要花不少功夫。
6、mybatis的优点和缺点
-
sql语句与代码分离,存放于xml配置文件中:
优点:便于维护管理,不用在java代码中找这些语句;
缺点:JDBC方式可以用打断点的方式调试,但是Mybatis不能,需要通过log4j日志输出日志信息帮助调试,然后在配置文件中修改。
-
用逻辑标签控制动态SQL的拼接:
优点:用标签代替编写逻辑代码;
缺点:拼接复杂SQL语句时,没有代码灵活,拼写比较复杂。不要使用变通的手段来应对这种复杂的语句。
-
查询的结果集与java对象自动映射:
优点:保证名称相同,配置好映射关系即可自动映射或者,不配置映射关系,通过配置列名=字段名也可完成自动映射。
缺点:对开发人员所写的SQL依赖很强。
-
编写原生SQL:
优点:接近JDBC,比较灵活。
缺点:对SQL语句依赖程度很高;并且属于半自动,数据库移植比较麻烦,比如mysql数据库编程Oracle数据库,部分的sq语句需要调 整。
-
最重要的一点,使用的人多!公司需要!但是应为用了反射,效率会下降,所有有些公司会使用原生的jdbc
-