Mybatis

本文介绍了Mybatis框架的基本概念,详细解析了其核心组件的工作原理,包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和SQLMapper等,并对比了Mybatis与Hibernate的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Mybatis?

Mybatis是一个基于java的持久层框架。Mybatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO),他消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
Mybatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs映射成数据库中的记录

Mybatis的工作原理

在这里插入图片描述

Myabtis的核心组件

SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式
SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式
SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是Mybatis提供的SQL Mapper接口编程技术,他能提高代码的可读性和可维护性
SQL Mapper(映射器):Mybatis新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。他负责发送SQL去执行,并返回结果
下图表示了Mybatis核心组件之间的关系:
在这里插入图片描述

Mybatis vs hibernate

1)sql 优化方面

  • Hibernate 不需要编写大量的 SQL,就可以完全映射,提供了日志、缓存、级联(级联比 MyBatis 强大)等特性,此外还提供
    HQL(Hibernate Query Language)对 POJO 进行操作。但会多消耗性能。
  • MyBatis 手动编写 SQL,支持动态 SQL、处理列表、动态生成表名、支持存储过程。工作量相对大些。

2)开发方面

  • MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO、SQL 和映射
    关系。
  • Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可。
    3)Hibernate 优势
  • Hibernate 的 DAO 层开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。
  • Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。
  • Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。
  • Hibernate 有更好的二级缓存机制,可以使用第三方缓存。MyBatis 本身提供的缓存机制不佳。
    4)Mybatis优势
  • MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段。
  • MyBatis 容易掌握,而 Hibernate 门槛较高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值