MyBatis学习及理解

1.Mybatis简介

  1. MyBatis是一款优秀的持久层框架,他支持定制化SQL文件、存储过程以及高级映射。避免了JDBC代码和手动设置参数以及获取结果集,Mybatis可以使用XML和注解来配置映射信息

2.框架特点

  1. 简单易学,
  2. 灵活,
  3. 解除了sql语句和代码的耦合性,提高了可维护性
  4. 支持动态编写SQL

3.MyBatis核心

  1. Configuration:Mybatis的配置信息都在Configuration中
  2. SqlSessionFactory:专门创建SqlSession的工厂
  3. SqlSession:主要与数据库进行交互,完成数据的增删改查
  4. Exexutor:Mybatis执行器,是Mybatis调度的核心,生成Sql语句,
  5. SqlSessionFactoryBuilder:读取mybatis-config.xml中的配置信息,生成SqlSession

4.mybatis原理图

5.执行原理:

  1. 通过Resources加载配置好的mybatis-config.xml配置文件
  2. 通过new的SqlSessionFactoryBuild构建出了SqlSessionFactory,调用build()方法,会发现XMLconfigBuilder,他是用来解析XML的也是构建者,通过parse方法解析xml
  3. 解析完成之后返回Configuration对象,存放mybatis核心配置文件解析完成的结果,返回一个SqlSessionFactory的实现类,传入DefaultSqlSession对象,(采用构建者模式,直接把对象传给SqlSessionFactoryBuilder
  4. 调用openSession()方法,会有一个返回值是SqlSession的方法,在SqlSsession中涉及到了事务的操作,通过transactiontory的参数产生了transcction(事务),其中还有一个executor,是一个接口(执行器),是mybatis核心执行器。发送Sql语句并执行,得到SqlSession
  5. JDK动态代理生成mapper接口和mapper接口的代理实现类,调用的方法是MapperProxyinvoke()方法,确定需要的方法,

Mybatis理解的更多相关文章

  1. mybatis理解(0)

  2. MyBatis之七:使用generator工具

    可以将mybatis理解成一种半自动化orm框架,通过注解或者配置xml映射文件来手写相关sql语句,不能像我之前介绍orm的文章那样全对象化操作数据库增删改查.其实你会发现,手写配置xml映射文件是 ...

  3. MyBatis之一:入门

    一.什么是Mybatis 可以简单将mybatis理解为ibatis的升级版本,它是一个java的持久层框架,底层依赖jdbc接口,此持久层框架包含sql maps与data access objec ...

  4. 来自MyBatis不一样收获结果的探索之旅-v3.5.9

    概述 定义 MyBatis官网 https://mybatis.org/mybatis-3/ 最新版本为3.5.9 MyBatis是一个的ORM框架,支持自定义SQL.存储过程和高级映射.MyBati ...

  5. Java高并发秒杀API之高并发优化

    ---恢复内容开始--- 第1章 秒杀系统高并发优化分析   1.为什么要单独获得系统时间 访问cdn这些静态资源不用请求系统服务器 而CDN上没有系统时间,需要单独获取,获取系统时间不用优化,只是n ...

  6. mybatis笔记3 一些原理的理解

    1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...

  7. 理解 Mybatis的分页插件 PageHelper

    Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper) 先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法. 按照上面的方法设置后,确 ...

  8. 《深入理解mybatis原理》 MyBatis事务管理机制

    MyBatis作为Java语言的数据库框架,对数据库的事务管理是其很重要的一个方面.本文将讲述MyBatis的事务管理的实现机制. 首先介绍MyBatis的事务Transaction的接口设计以及其不 ...

  9. 《深入理解mybatis原理》 Mybatis初始化机制具体解释

    对于不论什么框架而言.在使用前都要进行一系列的初始化,MyBatis也不例外. 本章将通过下面几点具体介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XM ...

随机推荐

  1. 题解 P6745 『MdOI R3』Number

    前言 不知道是不是正解但是觉得挺好理解. 科学计数法 将一个数表示为\(a\times 10^x\) 的形式.其中\(a\leq10\),\(x\) 为整数. \(\sf Solution\) 其实这 ...

  2. c++ 关于引用变量你不知道的东西

    引用变量延迟绑定 我们知道引用变量定义时要立刻赋值,告诉编译器他是谁的引用.如果不赋值,编译会失败. 如果引用变量是单个定义的,对他赋值还比较简单. struct test_T { int data; ...

  3. 记一次HTTPClient模拟登录获取Cookie的开发历程

    记一次HTTPClient模拟登录获取Cookie的开发历程 环境: ​ springboot : 2.7 ​ jdk: 1.8 ​ httpClient : 4.5.13 设计方案 ​ 通过新建一个 ...

  4. 删除redis对应key的缓存

    [root@zhyly-pre-002 ~]# /usr/local/redis/bin/redis-cli -p 6379 #登录redis 127.0.0.1:6379> auth 'Red ...

  5. .NET二叉树,递归和迭代遍历二叉树

    代码随想录: https://programmercarl.com .NET中二叉树的定义 public class TreeNode { public int val; public TreeNod ...

  6. nm命令解释

    nm命令参数解释 -A 或-o或 --print-file-name:打印出每个符号属于的文件-a或--debug-syms:打印出所有符号,包括debug符号-B:BSD码显示-C或--demang ...

  7. c#winfrom通讯录管理系统

    一个简单的通讯录管理系统,适合毕业设计. 主要实现以下功能 1.系统登录 2.增加联系人 3.修改和删除联系人 4.查找联系人 5.系统用户管理 首先先搭建数据库. 我这边使用的版本是sqlserve ...

  8. 【十次方微服务后台开发】Day02:加密与JWT鉴权、微服务注册中心、配置中心、熔断器、网关、消息总线、部署与持续集成、容器管理与监控Rancher、influxDB、grafana

    一.密码加密与微服务鉴权JWT 1.BCrypt密码加密 Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用B ...

  9. Go 每日一库之 go-carbon,优雅的golang日期时间处理库

    Carbon 是一个轻量级.语义化.对开发者友好的 golang 时间处理库,支持链式调用. Carbon 已被 awesome-go 收录, 如果您觉得不错,请给个 star 吧. github.c ...

  10. C#深拷贝方法

    概述 为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做. 方法一(利用反射实现 ...