MyBatis:介绍及执行流程

Mybatis介绍

  • Mybatisapache 下的一个开源项目,是对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建 connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
  • Mybatis 通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过 java 对象和 statement 中的sql 进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射成 java 对象并返回。

    MyBatis架构框架图

MyBatis开发流程和配置

开发设计图

Mybatis配置

  1. mybatis-config.xml,此文件作为 mybatis 的全局配置文件,配置了 mybatis 的运行环境等信息。
  2. mapper.xml文件即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在 SqlMapConfig.xml 中加载。
  3. SqlSessionFactory:通过mybatis环境等配置信息构造SqlSessionFactory会话工厂;线程安全,创建应在执行期间一直存在,不要重复创建,建议使用单例模式;创建sqlSession
  4. sqlSession:即会话,操作数据库需要通过sqlSession进行。
  5. Executormybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
  6. Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sqlid即是Mapped statementid

Mapped Statementsql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
Mapped Statementsql执行输出结果进行定义,包括HashMap、基本类型、pojo, Executor 通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

Mybatis与Hibernate比较

Hibernate优缺点

  • 优点
    1. 不需要写sql语句,写hql语句。
    2. 数据库迁移,不需要修改sql,只需修改方言。
  • 缺点
    1. 不适用于开发复杂的业务
    2. Hibernate优化比较复杂。
    3. HQL解析生成sql执行,降低项目性能。
    4. 生成sql语句比较难看,不易调试查错。
      常用于传统项目,需求变化不频繁的项目:OA、ERP、经融

Mybatis优缺点

  • 优点:
    1. 只需要集中精力在sql主句,不需要过多关注业务。
    2. 适用于需求变化较快的项目(互联网项目)。
作者

光星

发布于

2017-12-28

更新于

2022-06-17

许可协议

评论