1.Mybatis概述

news/2024/10/7 18:20:12

1. Mybatis历史

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。


iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

2. MyBatis特性

  1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  2. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  3. MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录
  4. MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

3. 和其它持久化层技术对比

  • JDBC

    • SQL 夹杂在Java代码中耦合度高,导致硬编码内伤
    • 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见
    • 代码冗长,开发效率低
  • Hibernate 和 JPA

    • 操作简便,开发效率高
    • 程序中的长难复杂 SQL 需要绕过框架
    • 内部自动生产的 SQL,不容易做特殊优化
    • 基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。
    • 反射操作太多,导致数据库性能下降
  • MyBatis

    • 轻量级,性能出色
    • SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
    • 开发效率稍逊于HIbernate,但是完全能够接受

4. 三层架构

img

  • 表现层(UI):直接跟前端打交互(一是接收前端ajax请求,二是返回json数据给前端)

  • 业务逻辑层(BLL):一是处理表现层转发过来的前端请求(也就是具体业务),二是将从持久层获取的数据返回到表现层。

  • 数据访问层(DAL):直接操作数据库完成CRUD,并将获得的数据返回到上一层(也就是业务逻辑层)。

  • Java持久层框架:

    • MyBatis
    • Hibernate(实现了JPA规范)
    • jOOQ
    • Guzz
    • Spring Data(实现了JPA规范)
    • ActiveJDBC
    • ......

5. ORM: 对象关系映射

  • O(Object):Java虚拟机中的Java对象
  • R(Relational):关系型数据库
  • M(Mapping):将Java虚拟机中的Java对象映射到数据库表中一行记录,或是将数据库表中一行记录映射成Java虚拟机中的一个Java对象。
  • ORM图示
    img
  • MyBatis属于半自动化ORM框架。
  • Hibernate属于全自动化的ORM框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/42730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

计算机基础知识之浮点数的表示

目录定点数表示浮点数表示习题浮点数的规格化例题习题计算机基础知识之原码、补码、反码和移码:https://www.cnblogs.com/kohler21/p/18233912定点数表示 定点小数(纯小数)在计算机中的表示形式:注:在计算机中,定点小数主要用于表示浮点数的尾数,并没有高级语言数据类型与…

WCP知识协作平台V5.1.7版更新(智能助手)

WCP知识协作平台V5.1.7版更新智能助手集成:侧边栏智能助手的加入,利用先进的人工智能技术,提供了涵盖名词解释、翻译、答案生成、知识摘要、知识问答以及知识图谱生成的多功能服务。这一集成不仅丰富了用户的交互体验,还显著增强了知识获取与处理的能力。 名词解释:在阅读…

【PB案例学习笔记】-04文件浏览器

写在前面 这是PB案例学习笔记系列文章的第4篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project…

PingCastle 3.2.0.1 - Active Directory 安全检测和评估

PingCastle 3.2.0.1 - Active Directory 安全检测和评估PingCastle 3.2.0.1 - Active Directory 安全检测和评估 活动目录域安全分析工具 请访问原文链接:https://sysin.org/blog/pingcastle/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org在 20% 的时间内获得…

SQL Server Management Studio (SSMS) 20.1 - 微软数据库管理工具

SQL Server Management Studio (SSMS) 20.1 - 微软数据库管理工具SQL Server Management Studio (SSMS) 20.1 - 微软数据库管理工具 请访问原文链接:https://sysin.org/blog/ssms/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org笔者注:SQL Server 2014 及之前…

SQL Server 2022 RTM 最新累积更新:Cumulative Update #13 for SQL Server 2022 RTM

SQL Server 2022 RTM (最新累积更新) - Cumulative Update #13 for SQL Server 2022 RTMSQL Server 2022 RTM (最新累积更新) - 基于 Azure 的持续性能和安全创新 Cumulative Update #13 for SQL Server 2022 RTM 请访问原文链接:https://sysin.org/blog/sql-server-2022/,查…

Kali Linux 2024.2 发布 (t64, GNOME 46 Community Packages) - 领先的渗透测试发行版

Kali Linux 2024.2 发布 (t64, GNOME 46 & Community Packages) - 领先的渗透测试发行版Kali Linux 2024.2 发布 (t64, GNOME 46 & Community Packages) - 领先的渗透测试发行版 The most advanced Penetration Testing Distribution 请访问原文链接:https://sysin.or…

运筹学练习Python精解——网络计划技术

练习1 某新产品研制项目的各项工序、所需时间及相互关系如下表所示,试画出该项目的网络图,分别用和双代号、单代号方法以及表上计算法计算事项时间参数,并求出关键路线。工序 工序代号 所需时间 紧后工序产品及工艺设计 A 60 B, C, D, E外购配套件 B 45 K下料、锻件 C 10 F工…