ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis的执行流程

2021-11-20 23:35:14  阅读:101  来源: 互联网

标签:xml 文件 配置文件 映射 流程 MyBatis mybatis 执行


一:XML文件中的DTD是什么?

DTD的全称为Document Type Definition,是一种文件定义格式,它规定了XML文件结构为XML文件提供了语法与规则。在DTD中定义XML文件的结构,然后按照DTD的声明来编写XML文件。就好像编程语言中的函数定义,在使用函数时要根据函数声明的格式进行来引用。

 

二:MyBatis的创建过程

 

创建MyBatis的基本步骤如下:

 

  1. 创建java工程

  2. 加入mybatis的jar包、数据库驱动包等

  3. 在pojo包下创建pojo类

  4. 在mapper包下创建任意名称的接口和任意名称的xml映射文件,设置dtd文件

  5. 在resources包下创建mybatis-config.xml核心配置文件,名称任意,设置dtd文件

  6. 编写映射文件

  7. 在主配置文件中加载xml映射文件

  8. 测试程序:

    1)用mybatis提供的Resources类读取配置文件

    2)用SqlSessionFactoryBuilder获得会话工厂,传入配置文件

    3)用工厂生产SqlSession

    4)调用SqlSession的相关方法获得结果

    5)关闭SqlSession对象

注意事项:

  • Resources:建包,只能手动一个一个建;

  • dao层的接口名和映射文件的名字必须一致,且映射文件只能写在resources目录下

  • mapper映射文件中的namespace只能和接口的类路径保持一致

  • 在mybatis-config.xml中元素标签的位置是有顺序的,顺序不对不能成功运行

  • 记得将mapper映射文件引入到mybatis.xml文件中去

  • 做sqlSession增删改的时候记得sqlSession.commit();

  • 别名不区分大小写,增删改映射文件中是没有返回值类型的;int类型会默认返回.

 

三.Mybatis的工作原理

 

 执行流程:

(1)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。

(2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

(3)构造会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。

(4)创建会话对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

(5)Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。

(6)MappedStatement对象。在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。

(7)输入参数映射。输入参数类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输入参数映射过程类似于JDBC对preparedStatement对象设置参数的过程。

(8)输出结果映射。输出结果类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输出结果映射过程类似于JDBC对结果集的解析过程。

 

标签:xml,文件,配置文件,映射,流程,MyBatis,mybatis,执行
来源: https://www.cnblogs.com/aimu69/p/15583019.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有