MyBatis(一)

一、 了解Mybais

1、历史(百度百科)

  • MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。

 

2、作用(百度百科)

  • MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

 

3、说说持久层

持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。

  1. 程序产生的数据首先都是在内存。

  2. 内存是不可靠的,他丫的一断电数据就没了。

  3. 那可靠的存储地方是哪里,硬盘、U盘、光盘等。

  4. 我们的程序在运行时说的持久化通常就是指将内存的数据存在硬盘。

 

 

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

  •  

上一篇:mybatis中的sql映射文件(2)-parameterType


下一篇:mybatis面试题