为了写一份MyBatis学习笔记,腾讯T4大牛竟然每天熬夜到凌晨三点

MyBatis内容介绍

本文档为纯手打,能够让你快速熟悉掌握MyBatis。转发+关注,然后私信回复 “MB” 即可获得《MyBatis源码笔记》的免费领取方式!

第一部分:MyBatis入门

1.什么是Mybatis?

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。是一个基于Java的持久层框架。

2.为什么我们要用Mybatis?

无论是Mybatis、Hibernate都是ORM的一种实现框架,都是对JDBC的一种封装!

3.MyBatis快速入门

其实我们已经学过了Hibernate了,对于Mybati入门其实就非常类似的。因此就很简单就能掌握基本的开发了.

4.Mybatis工作流程

  • 通过Reader对象读取Mybatis映射文件
  • 通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
  • 获取当前线程的SQLSession
  • 事务默认开启
  • 通过SQLSession读取映射⽂件中的操作编号,从而读取SQL语句
  • 提交事务
  • 关闭资源

5. 完成CRUD操作

我们在上面中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节

包与类之间的结构

6. 动态SQL

何为动态SQL??回顾⼀下我们之前写的SSH项⽬中,有多条件查询的情况,如下图

7. 入门总结

  • Mybatis的准备工作与Hibernate差不多,都需要一个总配置文件、一个映射文件。
  • Mybatis的SQLSession工具类使用ThreadLocal来对线程中的Session来进行管理。
  • Mybatis的事务默认是开启的,需要我们手动去提交事务。
  • Mybatis的SQL语句是需要手写的,在程序中通过映射文件的命名空间.sql语句的id来进行调用!
  • 在Mybatis中,增删改查都是Mybatis需要我们自己写SQL语句的,然后在程序中调用即可了。SQL由于是我们自己写的,于是就相对Hibernate灵活一些。
  • 如果需要传入多个参数的话,那么我们一般在映射文件中用Map来接收。

第二部分:Mybatis配置信息

1. 映射文件

在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句

2. 配置文件

别名

3. 配置相关总结

  • 在程序中调用的SQL语句是由映射文件的命令空间+sql片段的id所组成的。它内部会生成一个Statement对象的。
  • 在使用别名的时候,可以指定包名,在使用总配置文件加载映射文件时,也可以指定包名。
  • 主键如果需要返回的话,使用selectKey 标签即可。UUID也可以返回。在Oracle的话,是使用序列来返回自动增长的主键的。
  • 占位符有两种,一种是解析传递进来的参数数据、一种是原样输出传递进来的数据。

第三部分:关联映射

1. Mybatis【多表连接】

我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用 <set> .. <manyto-one> 等标签将其的映射属性关联起来的...那么在我们Mybatis中又怎么做呢???

2. 关联映射总结

对于Mybatis的多表连接就非常简单了,由于SQL语句全是由我们自己写,如果我们返回的数据类型在当前的实体中是不够封装的话,那么我们只要再关联对应的映射属性就行了!

转发+关注,然后私信回复 “MB” 即可获得《MyBatis源码笔记》的免费领取方式!

第四部分:缓存+Mapper代理+逆向工程

1. 前言

本文主要讲解Mybatis的以下知识点:

Mybatis缓存

  • 一级缓存
  • 二级缓存
  • 与Ehcache整合

Mapper代理

  • 使用Mapper代理就不用写实现类了

逆向工程

  • 自动生成代码

2. Mybatis缓存

缓存的意义将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。

3.MyBatis和ehcache缓存框架整合

ehcache是专门用于管理缓存的,Mybatis的缓存交由ehcache管理会更加得当

mybatis中提供一个cache接口,只要实现cache接口就可以把缓存数据灵活的管理起来

4. Mapper代理方式

Mapper代理方式的意思就是:程序员只需要写dao接口,dao接口实现对象由mybatis自动生成代理对象。

5. Mybatis解决JDBC编程的问题

6.Mybatis逆向工程

Mybatis逆向工程实际上就是想自动生成对应的代码,不用自己写对应的映射文件和接口

7.本章总结

  • Mybatis的一级缓存是sqlSession级别的。只能访问自己的sqlSession内的缓存。如果Mybatis与Spring整合了,Spring会自动关闭sqlSession的。所以一级缓存会失效的。
  • 一级缓存的原理是map集合,Mybatis默认就支持一级缓存
  • 二级缓存是Mapper级别的。只要在Mapper命名空间下都可以使用二级缓存。需要我们自己手动去配置二级缓存
  • Mybatis的缓存我们可以使用Ehcache框架来进行管理,Ehcache实现Cache接口就代表使用Ehcache来环境Mybatis缓存。
  • 由于之前写的DaoImpl是有非常多的硬编码的。可以使用Mapper代理的方式来简化开发

第五部分:Mybatis整合Spring

1. Mybatis与Spring整合

既然我们已经学了Mybatis的基本开发了,接下来就是Mybatis与Spring的整合了!

2. 总结

  • web.xml加载Spring配置文件
  • Spring配置文件配置数据连接池,SessionFactory、事务、扫描注解
  • Mybatis中配置文件、实体以及相对应的映射文件
  • 将映射文件加人到总配置文件中。

第六部分:Mybatis常见面试题

本文档为纯手打,能够让你快速熟悉掌握MyBatis。转发+关注,然后私信回复 “MB” 即可获得《MyBatis源码笔记》的免费领取方式!

MyBatis笔记脑图

猜你喜欢

转载自blog.csdn.net/yelvgou9995/article/details/106199707