MyBatis

Posted tangmingjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis相关的知识,希望对你有一定的参考价值。

MyBatis是一个Java的持久层框架,和Hibernate一样,都是ORM框架。

MyBaits的前身是iBatis,可以将数据库中记录映射为pojo,是开发人员以面向对象编程的思想来操作数据库。

MyBatis消除了几乎所有的JDBC代码,比如注册驱动,获取、关闭数据库连接,创建Statement对象,手动设置参数,结果集检索,这些都不需要,开发人员只需要使用xml进行简单的配置、映射,就可以操作数据库。

 

常见的封装了jdbc的框架:DbUtils、Hibernate、MyBatis、Spring的JdbcTemplate。

 

 

ORM框架

ORM,Object Relational Mapping 对象关系映射,对象指的是pojo,关系指的是关系型数据库中的表、记录。

常用的ORM框架包括MyBatis、Hibernate。

技术图片

 

 

MyBatis、Hibernate的区别

Hibernate是一个标准的ORM框架,是全表映射框架。

  • 开发效率要高于MyBatis。开发者只需定义映射关系、pojo,Hibernate会自动生成对应的sql语句、操作数据库的方法,开发者使用Hibernate提供的方法操作持久层就ok,不需要熟练掌握sql、不需要编写大量代码。
  • 学习门槛高。开发者要有良好的数据关系模型基础,需要学习复杂的hql。
  • 偏死板、维护有难度。Hibernate自动生成了大量的sql语句、方法,很多都用不到,冗杂。
  • 具有良好的数据库无关性,移植性较好。更换数据库时,比如从mysql换为oracle,只需更改方言,无需大量修改代码。
  • 适合场景不复杂、对性能要求不高的项目。Hibernate对多表关联查询支持较差,更新操作需要发送整个pojo对象(所有字段),不支持储存过程,不能进行sql优化来提高性能。

 

 

MyBatis是一个半自动映射框架。

  • 编码工作量要比HIbernate大。除了要定义映射关系、pojo,还需要自己写sql语句、操作数据库的方法。
  • 简单易上手。稍微有点sql基础就行。
  • 灵活、好维护。可根据需求编写sql,支持动态sql,可以自定义映射规则、支持存储过程。
  • 不支持数据库无关性。因为要自己编写sql,比如查询,mysql用limit,oracle用rownum,更换数据库时需要修改sql语句。
  • 对于复杂、对性能有要求的项目,MyBatis更合适。对关联映射、多表查询支持较好,因为是自己写sql,可以通过优化sql来提高性能。

以上是关于MyBatis的主要内容,如果未能解决你的问题,请参考以下文章

MybatisMyBatis 注解方式的基本 用法

MybatisMyBatis之缓存

MyBatisMyBatis的增删改查

Mybatismybatis登录实例

MybatisMybatis基础(中)

MybatisMybatis缓存