MyBatis 执行流程分析

这篇具有很好参考价值的文章主要介绍了MyBatis 执行流程分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。




MyBatis 执行流程分析,MyBatis & MyBatis-Plus,mybatis,java,springboot


1. MyBatis 执行流程概述


上篇文章讲到 MyBatis入门 MyBatis 的基本入门案例我们实现了通过 MyBatis 去获取数据库的数据,那么他的基本流程如下:

MyBatis 执行流程分析,MyBatis & MyBatis-Plus,mybatis,java,springboot

  1. 第一步:是从配置文件中根据配置的信息构建 SqlSessionFactory 对象,由于配置文件中关联了映射文件 UserMapper.xml ,所以在 SqlSessionFactory 中也存在映射文件的内容

  2. 第二步:是从 SqlSessionFactory 中获取 SqlSession 会话对象,其实 SqlSession 会话对象底层封装的就是 conn 连接对象

  3. 第三步:是通过 SqlSession 会话对象调用查询方法 selectList 然后根据参数找到映射文件中的 sql 语句并将数据封装到 pojo 的User对象中

名词解释

SqlSessionFactory : SqlSessionFactory 是 MyBatis 框架中的一个重要接口,用于创建SqlSession 对象,它是与数据库交互的主要入口点。

通过SqlSessionFactory,可以获取一个线程安全的SqlSession对象,用于执行数据库操作。SqlSessionFactory的创建是相对较重的操作,一般在应用程序的启动阶段进行创建,并在整个应用程序的生命周期内保持单例。它使用了一组配置信息,包括数据源、事务管理器、映射器(Mapper)等。

一般来说,创建SqlSessionFactory需要以下几个步骤:

- 加载MyBatis的配置文件,即包含了数据库连接信息、映射器配置等。
- 构建Configuration对象,作为SqlSessionFactory的配置信息。
- 使用SqlSessionFactoryBuilder根据配置信息创建SqlSessionFactory实例。

SqlSession: SqlSession是MyBatis框架中的一个核心接口,用于执行与数据库的交互操作。它提供了一系列的方法,包括查询、插入、更新、删除等,用于操作数据库并返回相应的结果。

SqlSession的一般使用流程如下:

- 通过SqlSessionFactory获取SqlSession对象。
- 使用SqlSession执行具体的数据库操作,如查询、插入、更新、删除等。
- 提交事务(如果使用了事务管理器)或手动调用SqlSession的commit()方法,将操作提交到数据库。
- 关闭SqlSession,释放相应的资源。 

SqlSession提供了一系列的方法,例如查询、新增、更新、删除等,用于与数据库进行交互。
每个线程应该拥有自己的SqlSession实例,并在使用完后及时关闭,以确保数据库连接的正确释放。一般推荐使用 try-with-resources 或 try-finally 等方式来确保 SqlSession 的正确关闭。


2. MyBatis 配置文件详解

在我们上个案例中的完整配置如下:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.0.108:3306/study_mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver


# mybatis 配置
mybatis:
  # 配置实体类所在的包
  type-aliases-package: com.snow.po
  # 配置 xml 文件所在的包
  mapper-locations: classpath:com/snow/mapper/*.xml
  configuration:
    # 开启驼峰命名
    map-underscore-to-camel-case: true

logging:
  level:
    com.snow.mapper: debug

MyBatis 配置信息详解:
MyBatis 执行流程分析,MyBatis & MyBatis-Plus,mybatis,java,springboot

  • username: 数据库用户名,这里设置为"root"。

  • password: 数据库密码,这里设置为"root"。

  • url: 数据库连接地址,这里使用MySQL数据库,连接地址为"jdbc:mysql://192.168.0.108:3306/study_mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"。其中,192.168.0.108是数据库服务器的IP地址,3306是MySQL数据库的默认端口号,"study_mybatis"是要连接的数据库名称,后面的部分是一些可选的连接参数,例如设置时区和字符编码等。

  • driver-class-name: 数据库驱动类全限定名,这里使用的是MySQL的JDBC驱动类"com.mysql.cj.jdbc.Driver"。
    type-aliases-package: 配置实体类所在的包。这里设置为"com.snow.po",表示MyBatis会扫描该包下的实体类,并将其注册为别名,方便在映射文件中使用类名代替全限定名。

  • mapper-locations: 配置XML映射文件所在的包或路径。这里设置为"classpath:com/snow/mapper/*.xml",表示MyBatis会在指定的包下按通配符的方式搜索映射文件,并加载到MyBatis中供使用。该配置可以指定一个或多个映射文件,多个映射文件之间使用逗号或分号分隔。

  • configuration: MyBatis的全局配置项。

  • map-underscore-to-camel-case: 配置是否开启驼峰命名规则。这里设置为"true",表示开启驼峰命名规则,即将下划线分隔的数据库字段名转换为驼峰命名的Java属性名。例如,数据库字段名为"first_name",则对应的Java属性名为"firstName"。默认情况下,MyBatis是关闭这个功能的,需要手动开启。


3. Mappers 映射器

mappers(映射器):UserMapper.xml====>UserMapper.java接口 关联.

mappers 是 MyBatis 配置文件中用于指定映射器(Mapper)接口的配置项

Mapper接口是定义了与数据库交互的方法的接口,它与映射文件相对应,可以通过映射文件中定义的SQL语句来执行数据库操作。配置mappers使得MyBatis能够将Mapper接口与对应的映射文件进行关联。

以下是一个示例的mappers配置项的写法:

mappers:
  - package: com.snow.mapper
  - mapper: com.snow.mapper.UserMapper

可以有两种方式进行配置:

  • 使用package配置项指定一个包名,表示将该包下的所有Mapper接口进行自动扫描,并将其与对应的映射文件进行关联。
  • 使用mapper配置项指定一个具体的Mapper接口的全限定名,表示将该Mapper接口与对应的映射文件进行关联。

可以根据实际情况配置 mappers,使得 MyBatis 能够正确加载和使用您定义的Mapper接口。



MyBatis 执行流程分析,MyBatis & MyBatis-Plus,mybatis,java,springboot文章来源地址https://www.toymoban.com/news/detail-721676.html

到了这里,关于MyBatis 执行流程分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java:mybatis-plus-generator-ui 基于Mybatis-Plus的代码自助生成器

    引用官方文档上的简介: 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等 ,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。 文档 github: https://github.com/davidfantasy/mybatis-plus-generator-ui gitee: https://g

    2024年02月10日
    浏览(53)
  • MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询 com.github.dreamyoung mprelation 0.0.3.2-RELEASE 注解工具使用优缺点: 优点: 使用简单,通过在实体类上添加@OneToOne / @OneToMany / @ManyToOne / @ManyToM

    2024年01月20日
    浏览(57)
  • 深入解析Mybatis-Plus框架:简化Java持久层开发(二)

    博客地址: CSDN :https://blog.csdn.net/powerbiubiu 本章节开始从实际的应用场景,来讲解Mybatis-Plus常用的一些操作,根据业务场景来进行增删改查的功能,首先先搭建一个项目。 1 搭建数据库 根据业务场景,设定了用户,角色,菜单三张表,同时还有用户与角色关联表,角色与菜

    2024年02月20日
    浏览(69)
  • mybatis源码学习之mybatis执行流程分析

    mybatis全局配置文件中涉及的标签如下图所示 下面我们来进行源码分析。 配置文件的解析创建SqlSessionFactory 配置文件的解析主要涉及到的类如下:XMLConfigBuilder、XPathParser、XPath、XNode,其中XPath、XNode是对 1、build方法内部首先会根据输入流等信息创建XMLConfigBuilder类的实例对象,

    2024年02月07日
    浏览(49)
  • java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧

    文章java springboot整合MyBatis做数据库查询操作讲述了boot项目整合MyBatis的操作方法 但现在就还有一个 MyBatis-Plus Plus是国内整合的一个技术 国内的很多人会喜欢用 特别是一些中小型公司 他们用着会比较舒服 好 然后我们打开idea 创建一个项目 选择 Spring Initializr 工程 调一下项目

    2024年02月09日
    浏览(61)
  • 【Mybatis-Plus】Mybatis-Plus快速入门

    Mybatis-Plus是基于Mybatis的数据库操作组件,其实现的功能完全是Mybatis的功能拓展,不改变Mybatis的使用方式,可以兼容Mybatis的操作方式。 创建一个数据库、一个表进行基础操作: 创建一个Spring项目,项目通过Spring Initlizer创建,不导入任何依赖包,在POM.xml文件中进行依赖导入

    2024年02月07日
    浏览(47)
  • MyBatis 执行流程分析

    上篇文章讲到 MyBatis入门 MyBatis 的基本入门案例我们实现了通过 MyBatis 去获取数据库的数据,那么他的基本流程如下: 第一步:是 从配置文件中根据配置的信息构建 SqlSessionFactory 对象 ,由于配置文件中关联了映射文件 UserMapper.xml ,所以在 SqlSessionFactory 中也存在映射文件的内

    2024年02月08日
    浏览(41)
  • Mybatis-Plus 进阶开发 -- Mybatis-Plus 入门教程(二)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月10日
    浏览(52)
  • Mybatis-Plus通用枚举功能 [MyBatis-Plus系列] - 第493篇

    历史文章( 文章 累计490+) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《

    2024年02月08日
    浏览(39)
  • Mybatis-Plus(三)--Mybatis-Plus配置和条件构造器

    在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情:https://mybatis.plus/config 【1】configLocation--自己单独的MyBatis配置的路径 SpringMVC的xml中写法: 【2】mapperLocations--MyBatis Mapper所对应的XML文件位置 如果你在Mapper中有自定义方法(XML中有自定义实现

    2024年02月15日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包