美文网首页
Mybatis工作原理

Mybatis工作原理

作者: 高级java架构师 | 来源:发表于2018-10-09 09:33 被阅读31次

简单来说,他跟你直接用一个sqlUtil的实现是一样,只不过很多复杂的util优化的事情,提前有其他程序员做了。

Mybatis是一个映射封装,他与你用util的区别就是,他将在代码块中的sql存在统一的xml文件也就是sqlmaper中。同时他将你执行sql的传参也就是执行变量进行了通配,然后映射到你的model中。

Mybatis大概的执行过程:

通过factory方法获取sqlsession----通过MapperProxy代理到dao--执行底层数据库操作,简单说就是跟楼上说的据经过controller 再经过service 然后执行service中的相关方法并关联到mapper 再执行mapper.xml中的sql语句===@象厂喜剧

我们以JDBC为例看看他们的区别:

JDBC:

(1)  加载JDBC驱动,建立并获取数据库连接 ,创建statement对象

(2)  设置SQL语句的传入参数

(3)  执行SQL语句并获得查询结果

(4)  对查询结果进行转换处理并将处理结果返回

(5)  释放资源

Mybatis:

1:使用连接池,datasource,在驱动并连接的这个过程中优化并解耦

JDBC第一步其实从效率角度来看是不合适的,因为无论什么数据库都不可能支撑随机和庞大的连接数,而且不可避免的存在连接浪费的情况,Mybatis就封装了这些优化的方法。

2:统一sql存取到XML

  如果代码写在java块中,在团队合作中很可能出现两个交叉业务的代码使用类似的sql语句,而开发人员的工作本身没有交集,那就代表sql语句肯定是无法复用的。而且对sql的修改,就代表着对java文件的修改,需要重新编译和打包部署(比如常见的状态值更改,sql修改随着业务变化必然存在修改)。

  mybatis将sql统一存取到xml中,就算存在业务交叉,但因为统一配置的缘故,sql在xml中一目了然,两个跨team的程序员可以看到对方的sql,来判断自己是否需要重用。并且使用xml配置可以减少代码编译。

  还有就是在java中拼写长sql太恶心了。

3:参数和结果集映射

  sql的方式需要传入参数,如果存在多条件“或类型”的查询(列表查询的查询条件允许空),那就代表你必须传参进行sql拼接,就算使用xml的方式也不行。要么每个业务独立配置xml中的sql,要么还是写入java代码中,或者以工具的方式进行自动拼接。

  Mybatis使用映射的方式,方便model管理参数,同时以解析器的方式将参数动态拼接到sql(sqlmaper里那些标签),由于是model映射,连查询结果都可以统一映射,方便取出和运算。而且mybatis对查询结果集进行了缓存处理,使得重复查询进一步进行了优化。

4:对多重复sql进行复用封装

  比如模板方法,将常用sql模块化,直接调用。比如通用的save和getID之类的,只有表名和字段名有变化。

如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级架构进阶群:180705916,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家

相关文章

  • Mybatis 的工作原理

    Mybatis 工作原理 上图是Mybatis 工作原理,步骤如下: 读取 Mybatis 配置文件mybatis...

  • 面试官都爱问的Spring源码:Spring与Mybatis高级

    在介绍Spring整合Mybatis原理之前,我们得先来稍微介绍Mybatis的工作原理。 Mybatis的基本工...

  • Mybatis-2-1.SqlSession和Mapper

    Mybatis基本工作原理 (1)读取MyBatis的配置文件。mybatis-config.xml为MyBati...

  • Mybatis常见问题

    1.Mybatis工作原理创建SqlSessionBuilder 读取mybatis配置文件的信息 ,Sqlses...

  • Mybatis工作原理

    简单来说,他跟你直接用一个sqlUtil的实现是一样,只不过很多复杂的util优化的事情,提前有其他程序员做了。 ...

  • Mybatis工作原理

    Mybatis是一个映射的封装,他将代码块中的sql存在统一的xml文件也就是SqlMapper中。同时他将你执行...

  • Mybatis工作原理?

    本文转自大神----因为我是菜鸟 简单来说,它跟你直接用一个sqlUtil的实现是一样,只不过很多复杂的util优...

  • MyBatis 工作原理

    概览 我把MyBatis的工作原理分为以下几个方面或方面: 一.创建SqlSessionFactory对象 我Go...

  • mybatis工作原理

    我将其工作原理分为六个部分: 读取核心配置文件并返回InputStream流对象。 根据InputStream流对...

  • Mybatis的工作原理/源码解析

    Mybatis的工作原理/源码解析 稍后奉上,敬请期待。

网友评论

      本文标题:Mybatis工作原理

      本文链接:https://www.haomeiwen.com/subject/grxeaftx.html