-
什么是mybatis?
mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。
- 框架用于持久层,就是说这个框架是和数据库进行交互的,用于数据库中数据操作的框架
- 轻量级框架的概念可以简单的理解为所用框架开发的程序启动时占用的资源少、对业务代码的侵入性不强、比较容易配置、使用和部署简单、独立部署即可使用无需依赖另外的框架。
- ORM,Object Relational Mapping, 对象关系映射,将java中的类型一一映射到数据库的字段类型上,因此可以将其看作是一个ORM框架,半自动是因为使用mybatis,需要手动配置pojo、sql和映射关系,用户可以自定义sql,这些sql是针对于处理数据库的,但是这些sql需要接受一些查询java类型的参数,或者是返回结果集封装到java类中,这些是需要配置的,因此mybatis是一个半自动ORM框架。
-
为什么要用mybatis?
传统 JDBC 开发存在的问题:
- 频繁创建数据库连接对象、释放,容易造成系统资源浪费,影响系统性能。可以使用连接池解决这个问题。但是使用 jdbc 需要自己实现连接池。
- sql 语句定义、参数设置、结果集处理存在硬编码。实际项目中 sql 语句变化的可能性较大,一旦发生变化,需要修改 java 代码,系统需要重新编译,重新发布。不好维护。
- 使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
- 结果集处理存在重复代码,处理麻烦。如果可以映射成 Java 对象会比较方便。
MyBatis解决JDBC的问题
- 在 mybatis-config.xml 中配置数据链接池,使用连接池管理数据库连接。
- 将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。
- Mybatis 自动将 java 对象映射至 sql 语句。
- Mybatis 自动将 sql 执行结果映射至 java 对象。
-
Mybatis优缺点
优点:
- 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响。
- SQL写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理。
- 提供 XML 标签,支持编写动态 SQL 语句,并可重用与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接很好的与各种数据库兼容
- 提供映射标签,支持对象与数据库的 ORM 字段关系映射。
- 提供对象关系映射标签,支持对象关系组件维护能够与 Spring 很好的集成
缺点:
- SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求。
- SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。