![](https://img-blog.csdnimg.cn/20210607104135282.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyBatis
文章平均质量分 93
从MyBatis切入,但不仅仅局限于MyBatis的相关知识讨论,而是深入理解ORM框架的通用原理,底层机制,一通百通,了解了MyBatis,其它类似的ORM框架万变不离其宗
存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【MyBatis学习笔记 一】MyBatis基本概念及项目集成
在Java Web编程系列的Blog中,我们学习了使用JDBC去通过代码操作数据库,我们知道JDBC是一组规范,一组API,也在使用的过程中发现一些代码控制上的不友好感,例如我们需要自己去写代码控制连接的生命周期;获取到结果集需要自己去转换数据类型再进行模型的设置;sql语句强嵌入到代码中不好维护等等诸多问题。其实这些也是可以理解的,JDBC只是提供了一组规范,细粒度的解决代码访问数据库这个问题,最佳实践还仰赖ORM框架来实现,所以其实后续有很多封装的ORM框架作为DAO层和数据库Model的管理者。例如我原创 2021-08-08 13:07:12 · 542 阅读 · 0 评论 -
【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析
上一篇Blog了解了MyBatis的基本概念、用途并且简单构造了一个MyBatis的项目并进行了一些操作,本篇Blog就来学习下MyBatis的基本操作,也就是我们常用的CRUD增删改查,并且通过基本操作来深入理解下配置的解析流程。基本操作还是使用我们上篇Blog的项目做下面的一些操作,继续操作person表来完成基本的CRUD操作,回顾下上篇Blog我们创建的PersonDao对象:package com.example.MyBatis.dao.mapper;import com.example.原创 2021-08-08 17:26:17 · 362 阅读 · 1 评论 -
【MyBatis学习笔记 三】结果集映射、日志处理及分页查询
上一篇Blog了解了基本的MyBatis操作后,我们本篇来学习一下如何实现一些较为高级的操作。分别是返回值的模型映射、日志处理以及分页查询的实现。模型映射如果是一个初始化的项目,我们当然尽量的让我们的数据对象,也就是Data Model和数据表中的字段名称保持一致,但是要维护一些老的项目或者说确实有一些我们认为名称应该有所区别的,就需要做一个映射了,类似Hibernate里的Person.hbm.xml文件,我们的Mapper文件也需要做返回结果的映射。命名不一致的问题首先我们在上篇【MyBatis原创 2021-08-11 23:37:19 · 350 阅读 · 0 评论 -
【MyBatis学习笔记 四】MyBatis基本运行原理源码解析
前面三篇Blog详细的对MyBatis从使用层面上进行了实践,包括Mybatis的整体配置、基本操作:CURD以及模糊查询like语句,以及高级的结果集映射、分页查询和日志输出查看。那么使用到现在我觉得大家都会像我一样好奇,Mybatis的实现原理机制到底是什么样的,我们知道一个MyBatis方法执行要有这么几个步骤,拿update操作举例: @Test public void testUpdatePerson() { //1.获取SqlSession对象 SqlS原创 2021-08-14 19:00:12 · 436 阅读 · 0 评论 -
【MyBatis学习笔记 五】MyBatis注解开发实现方式
上一篇Blog我们详细分析了MyBatis的执行原理,我们可以感受到其实实际的方法执行是通过动态代理而非方法本身实现的,那么既然基于动态代理可以实现,那么基于注解的实现方式貌似看起来更加直观,因为注解是可以直接加在方法上的。本篇Blog来学习下如何通过注解进行MyBatis的实现。MyBatis注解开发流程因为我们使用了注解开发,所以PersonMapper文件就不需要了,而且我们知道其实该配置文件最终被获取的也是接口的全限定名,所以我们确保核心配置文件能找到该接口即可:1 调整核心配置文件我们首先原创 2021-08-14 22:49:57 · 422 阅读 · 0 评论 -
【MyBatis学习笔记 六】MyBatis关联查询和集合查询
之前我们做的都是单表查询,那么问题来了,如果我们想要做多表关联查询该怎么处理呢,本篇Blog来探索关联查询(多对一关系)和集合查询(一对多关系)的实现方式。同样还是在之前的Person表基础上做一些扩展。数据及代码准备首先我们预设一个场景:一条人员Person数据对应多个账户BankAccount数据,然后分别进行账户数据的查询时获取到关联的人员数据【多对一关联查询】和通过人员获取账户数据【一对多关联查询】。1 数据表准备首先我们需要准备两张数据表,首先Person表是之前准备好的,我们还是用之前预原创 2021-08-16 10:24:08 · 3429 阅读 · 0 评论 -
【MyBatis学习笔记 七】MyBatis动态SQL基本操作
之前的Blog我们使用了各种SQL语句,然而大多数都是静态的SQL,也就是不会依据业务逻辑来进行拼接的单一逻辑的SQL,其实有很多场景我们也需要使用到动态SQL。为什么使用MyBatis动态SQL什么是动态SQL呢?动态SQL指的是根据不同的查询条件 , 生成不同的SQL语句。为什么使用动态SQL首先我们需要明确为什么有些场合下需要使用动态SQL而不是静态SQL。例如当我们写一些判断SQL或者循环的SQL时:SET @username='tml';SET @age=30;select * fr原创 2021-08-16 17:01:20 · 402 阅读 · 0 评论 -
【MyBatis学习笔记 八】MyBatis两级缓存机制
早在去年12月份的一篇Blog中【MySQL数据库原理 一】MySQL架构及查询语句执行流程探索MySQL的执行步骤中就提到过查询缓存这一个概念:并且提到过其实不建议使用查询缓存,正因为如此,我们才不把缓存做到数据库,这样作为服务端的数据库缓存了各个客户端大量查询结果能用的比例却比较低,性价比不高;反之大多数应用都把缓存做到了应用逻辑层,简单的如一个map的MyBatis,由客户端自己定义策略。缓存的基本概念什么是缓存,缓存就是存储在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去原创 2021-08-17 00:07:57 · 401 阅读 · 0 评论