官网

http://www.mybatis.org/mybatis-3/zh/index.html

GitHub

https://github.com/mybatis/mybatis-3

简介

MyBatis 本是 apache 的一个开源项目 iBatis

2010年这个项目由 apache software foundation 迁移到了 google code ,并且改名为 MyBatis

2013年11月迁移到 Github

MyBatis 是一款优秀的基于 Java持久层框架

MyBatis 是一个半自动化的ORM (Object Relationship Mapping) 框架 --> 对象关系映射

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。

MyBatis 可以使用简单的 XML注解来配置和映射原生信息,将接口和 Java 的实体类映射成数据库中的记录。

持久化

持久化是将程序数据在持久状态和瞬时状态间转换的机制

核心就是把数据(如内存中的数据)保存到可永久保存的存储设备中(如磁盘)。

JDBC 就是一种持久化机制;文件 IO 也是一种持久化机制。

为什么需要持久化

内存本身的缺陷引起的,因为内存断电后数据会丢失。

有一些重要数据是无论如何都不能丢失的,但无法保证内存永不掉电。

内存过于昂贵,而且维持成本也高,需要一直供电。

即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

持久层

完成持久化工作的代码块(如DAO层、Mapper层)。

现在的企业应用持久化的实现过程大多是通过各种关系数据库来完成。

持久层是一个独立的层级,用于处理数据,为了层级职责清晰,不建议在该层编写业务逻辑。

优点

复用

传统的 JDBC 操作,有很多重复代码块,会造成一定的代码冗余。

MyBatis 由于将 SQL 语句独立成了接口,可以增加代码的复用性,减少冗余代码。

轻量

MyBatis 很小巧,最简单安装只需要两个 jar 包和配置几个 SQL 映射文件就可以。

无侵入

没有任何第三方依赖,不会对应用程序或者数据库的现有设计强加任何影响。

灵活

提供 XML 标签,支持编写动态 SQL。

易于管理

SQL 语句写在 XML 里,便于统一管理和优化。

强大

通过 SQL 语句可以满足操作数据库的所有需求。

解耦

通过提供 DAO 层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,易于维护和进行单元测试。

活跃

Mybatis 是国内最流行的 Java 持久层框架,可以和众多框架集成,有非常活跃的社区,版本迭代和维护也较为频繁。

MyBatis 01 概述的更多相关文章

  1. Hello Mybatis 01 第一个CRUD

    What's the Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...

  2. 01 - 概述 VTK 6.0 迁移

    摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...

  3. MyBatis框架概述

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设 ...

  4. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  5. Hive 01 概述、安装配置

    概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...

  6. 【OracleDB】 01 概述和基本操作

    实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...

  7. 框架学习-MyBatis(01)

    1.MyBatis是持久层框架 什么是持久化: 狭义:把数据永久性的保存到数据当中 广义:针对于数据库的所有操作都称为持久化操作,CreateReadUpdateDelete操作 2.有哪些持久层框架 ...

  8. Headfirst JSP 01 (概述)

    HTTP 协议 http 是tcp/ip上层协议, 如果你对这些网络协议还不是太熟悉, 下面提供一个非常简单的解释, tcp负责确保从一个网络节点向另一个网络节点发送文件能作为一个完整的文件到达目的地 ...

  9. Python学习笔记 :01概述

    Python基础 首先推荐学习Python基础的教程和书籍 视频教程推荐南京大学张莉老师在cousera上的教程用Python玩转数据 入门教程<Python基础教程> 数据挖掘教程< ...

随机推荐

  1. 接口测试postman深度挖掘应用③--postman终结篇

    上一章节我们介绍了postman的变量测试以及导入数据测试基本上技术性的东西已经差不过了,这篇文章再系统性的介绍一下. 一.下载 官网:https://www.postman.com 1.选择需要下载 ...

  2. Tmux常用命令总结

    会话 # 创建会话 tmux new -s work -s是session # 查看tmux进程 ps aux | grep tmux # 连接会话 tmux attach -t work # 会话分 ...

  3. 【Redis】客观下线

    在sentinelHandleRedisInstance函数中,如果是主节点,需要做如下处理: void sentinelHandleRedisInstance(sentinelRedisInstan ...

  4. JS:表达式

    js代码的形式: 1.直接量 2.表达式 3.语句 1; "a"; true; null; var a; function fn(){}; b; var c = 20; var f ...

  5. SpringBoot整合SpringSecurityOauth2实现鉴权-动态权限

    写在前面 思考:为什么需要鉴权呢? 系统开发好上线后,API接口会暴露在互联网上会存在一定的安全风险,例如:爬虫.恶意访问等.因此,我们需要对非开放API接口进行用户鉴权,鉴权通过之后再允许调用. 准 ...

  6. 你是否有一个梦想?用JavaScript[vue.js、react.js......]开发一款自定义配置视频播放器

    前言沉寂了一周了,打算把这几天的结果呈现给大家.这几天抽空就一直在搞一个自定义视频播放器,为什么会有如此想法?是因为之前看一些学习视频网站时,看到它们做的视频播放器非常Nice!于是,就打算抽空开发一 ...

  7. python实现人脸关键部位检测(附源码)

    人脸特征提取 本文主要使用dlib库中的人脸特征识别功能. dlib库使用68个特征点标注出人脸特征,通过对应序列的特征点,获得对应的脸部特征.下图展示了68个特征点.比如我们要提 取眼睛特征,获取3 ...

  8. 10分钟实现dotnet程序在linux下的自动部署

    背景 一直以来,程序署都是非常麻烦且无聊的事情,在公司一般都会有 devops 方案,整个 cicd 过程涉及的工具还是挺多的,搭建起来比较麻烦.那么对于一些自己的小型项目,又不想搭建一套这样的环境, ...

  9. NC202492 仓库选址

    NC202492 仓库选址 题目 题目描述 牛能在某小城有了固定的需求,为了节省送货的费用,他决定在小城里建一个仓库,但是他不知道选在哪里,可以使得花费最小. 给出一个 \(m \times n\) ...

  10. java中的变量及命名

    变量 变量顾名思义就是可以变化的量 因为java是强类型语言,所以每个变量都必须声明其类型 java变量是最基本的存储单元,要素包括变量名称,变量类型和作用域. 目录 变量 1.常用的变量创建 2.变 ...