ICode9

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

MyBaits框架基本了解与其工作流程

2021-11-19 18:59:26  阅读:166  来源: 互联网

标签:语句 xml 框架 映射 流程 MyBaits SQL MyBatis


MyBatis框架初识

首先,我们要知道,所谓的MyBaits框架其实是一个开源的数据持久层框架。这里提一嘴,数据持久化指的是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型统称,千万不要理解为将数据永久保存。MyBatis内部封装了通过JDBC访问数据的操作,支持普通的SQL查询、存储过程和高级映射,消除了所有的JDBC代码和参数的手工设置及结果集的检索。MyBatis框架作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在文件中,以实现SQL的灵活配置。

现如今数据持久层框架广泛应用的主要有MyBatis框架和Hibernate框架。Hibernate框架是一个全表映射的框架。通常开发者只要定义好持久化对象到数据库表的映射关系,就可以通过Hibernate框架提供的方法完成持久层操作,开发者并不需要熟练地掌握SQL语句的编写。然而Hibernate框架自身也存在一些缺点,如多表关联时,对SQL查询的支持较差;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化SQL来优化性能等,导致其只适合在场景不太复杂且性能要求不高的项目中使用。MyBatis框架是一个半自动映射框架,当然,这里的“半映射”也是相较于Hibernate框架来说,MyBatis框架需要手动匹配POJO、SQL和映射关系,而Hibernate框架只需要提供POJO和映射关系即可。MyBatis框架可以配置动态SQL、通过配置决定SQL的映射规则,以及支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis会更加合适。

MyBatis框架的工作流程

1)首先需要读取MyBatis配置文件,也就是mybatis-config.xml,此文件应在搭建MyBatis框架的环境时编写,其中主要功能是获取数据库连接。读取全局配置文件时的代码为

String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
//获取mybatis-config.xml的输入流

2)加载映射文件Mapper.xml。该文件中配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml可以加载多个配置文件,每个配置文件都对应数据库中的一张表。特别的提一嘴,mapper元素表示映射文件的根元素节点,只有一个属性namespace

3)构建会话工厂SqlSessionFactory,代码为

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

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

int count = 0;
SqlSession sqlSessoin = null;
//创建SqlSession对象
sqlSession = factory.openSession();
count = sqlSession.selectOne("cn.dsscm.dao.user.UserMapper.count");
//调用mapper文件对数据进行操作,必须先把mapper文件引入到mybaits-config.xml中
logger.debug("UserMapperTest count--->"+count);

5)Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它会根据SqlSession传递的参数,动态地生成需要执行的SQL语句,同时负责查询缓存的维护。简单的来说就是相当于一个中间转换人的角色,将Java对象根据既定的规则映射到SQL语句中。

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

7)输入映射。在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义(如Map类型、List类型、基本类型和POJO类型),Executor执行器通过MappedStatement对象在执行SQL前,将输入的Java对象映射到SQL语句中。

8)输出映射。在数据执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义如Map类型、List类型、基本类型和POJO类型),Executor执行器通过MappedStatement对象在执行SQL后,将输出结果映射至Java对象中。

标签:语句,xml,框架,映射,流程,MyBaits,SQL,MyBatis
来源: https://blog.csdn.net/qq_46639073/article/details/121412937

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

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

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

ICode9版权所有