ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatis(一)

2022-01-23 16:00:33  阅读:148  来源: 互联网

标签:语句 持久 映射 数据库 SQL 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

  •  

标签:语句,持久,映射,数据库,SQL,MyBatis
来源: https://www.cnblogs.com/-zifeiyu/p/15836577.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有