美文网首页java高级开发群青春校园Java
为了写一份MyBatis学习笔记,腾讯T4大牛竟然每天熬夜到凌晨

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

作者: Java技术剑 | 来源:发表于2020-05-18 20:19 被阅读0次

    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> .. <many�to-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笔记脑图

    相关文章

      网友评论

        本文标题:为了写一份MyBatis学习笔记,腾讯T4大牛竟然每天熬夜到凌晨

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