MyBatis基础知识

为什么要学习MyBatis?

       去年有个从兄弟公司过来支援的兄弟告诉我:hibernate太重了,一般都是外国人在用,国内用的很少。当时我想:我们用Hibernate遇到一些问题,不是因为它不好用,而是我们自己没学好。比如,存在一些设计问题:一个主表关联七八张从表、从表又有从表,要查询的时候就写一连串left join fetch。看起来就不好看,如何指望它工作的很好?

     后来又有一个从某知名培训机构出来的小兄弟告诉我:他们都不学hibernate了,学校只教MyBatis了。于是我决定学一学。昨天终于开始学了,今天“略有小成”。

MyBatis能帮我们做什么?

   通常我们说的ORM框架,会把实体对象转化成数据库记录,会把数据库表中的记录转化成实体对象。Hibernate能同时做这两件事。MyBatis只做一件事:把数据库中的记录转化成实体对象。这就够了。SQL还是得自己来写。

MyBatis的架构

   我们学一样东西,都是先整体后部分。MyBatis从上到下分为接口层、数据处理层和支撑层。接口层就是我们开发人员能够调用的增删改查接口,数据处理层要进行参数映射、SQL解析、SQL执行和结果映射,支撑层要进行配置管理、连接管理和缓存管理等。

MyBatis的工作流程

  1.  利用SqlSessionFactory读取配置文件,对MyBatis进行初始化操作,为开发人员提供SqlSession对象。SqlSession具有四大神器,分别是Executor、StatementHandler、ParameterHandler和ResultSetHandler。
  2. 每一个SqlSession对象拥有一个Executor对象,它负责增删改查的具体操作.我们可以将它理解为对JDBC中Statement的封装。
  3. StatementHandler是四大神器中最重要的。它使用ParameterHandler进行参数配置,使用Statement操作数据库,使用ResultHandler将查询结果与实体对象绑定。
  4. ParameterHandler负责为PreparedStatement的sql语句中的参数动态赋值。
  5. ResultSetHandler处理Statement执行后产生的结果集,得到结果列表。

MyBatis的事务

    MyBatis的事务管理有两种方式:JdbcTransaction和ManagedTransaction。前者是MyBatis自己调用jdbc来实现事务管理。如果MyBatis本身由其他框架来管理,比如Spring,此时事务的管理将交给Spring,这就是第二种管理方式。

MyBatis的缓存

MyBatis的的缓存分为一级缓存和二级缓存。

  1. 一级缓存保存用户在一次会话过程中的查询结果。一级缓存自动开启,不允许关闭。
  2. 二级缓存是针对某一个表的查询结果的缓存。所有查询这张表的用户共享。

后记

    好了,以上就是对MyBatis的简单介绍,这是这两天学习Mybatis的笔记。我准备搞个tyro系列,在github上公开源码。tyro是“初学者”的意思。我想记录下我的学习过程,也希望对初学者有用。

-----------------------------------------------------------------------------------------

我的公众号:永宁河(peace_river)。喜欢写代码的小朱老师的学习笔记。

我的公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值