![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis
文章平均质量分 86
Mybatis
断河愁
这个作者很懒,什么都没留下…
展开
-
Mybatis_第⼗⼀部分:设计模式
packagecomlagoudao;importorgapacheibatisbinding;importorgapacheibatissessionSqlSession;importjavautilOptional;ComputerprivateStringdisplayer;privateStringmainUnit;privateStringmouse;privateStringkeyboard;public。原创 2023-06-06 01:51:29 · 69 阅读 · 0 评论 -
Mybatis_第⼗部分:Mybatis源码剖析
进⾏调试的时候,如果断点打到 代理执⾏逻辑当中,你会发现延迟加载的代码永远都不能进⼊,总是会被提前执⾏。因为只有当需要⽤到数据时,才会进⾏数据库查询,这样在⼤批量数据查询时,因为查询⼯作也要消耗时间,所以可能造成⽤户等待时间变⻓,造成⽤户体验下降。中去查询的,所以这个⼆级缓存查询数据库后,设置缓存值是没有⽴刻⽣效的,主要是因为直接存到 delegate。⾸先会查询⼆级缓存,若⼆级缓存未命中,再去查询⼀级缓存,⼀级缓存没有,再查询数据库。就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据。原创 2023-06-06 01:36:14 · 78 阅读 · 0 评论 -
Mybatis_第九部分:Mybatis架构原理
我们把Mybatis的功能架构分为三层:(1) API接⼝层:提供给外部使⽤的接⼝API,开发⼈员通过这些本地API来操纵数据库。接⼝层⼀接收到 调⽤请求就会调⽤数据处理层来完成具体的数据处理。MyBatis和数据库的交互有两种⽅式:a.使⽤传统的MyBati s提供的API;b.使⽤Mapper代理的⽅式(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执⾏和执⾏结果映射处理等。它主要的⽬的是根据调⽤的请求完成⼀次数据库操作。(3)原创 2023-06-05 22:51:09 · 60 阅读 · 0 评论 -
Mybatis_第⼋部分:Mybatis插件
这样的好处是显⽽易⻅的,⼀是增加了框架的灵活性。初始化的时候创建的。来说插件就是拦截器,⽤来增强核⼼对象的功能,增强功能本质上是借助于底层的 动态代理实现的,换句话说,MyBatis。顺序写到这,不要多也不要少,如果⽅法重载,可是要通过⽅法名和⼊参来确定唯⼀的。⽅法会 对所拦截的⽅法进⾏检测,以决定是否执⾏插件逻辑。插件初始化的时候调⽤,也只调⽤⼀次,插件配置的属性从这⾥设置进来。是将分⻚的复杂操作进⾏封装,使⽤简单的⽅式即可获得分⻚的相关数据。注解中,若是,则执⾏插件逻辑,否则执⾏被拦截⽅法。原创 2023-06-05 22:48:22 · 1333 阅读 · 0 评论 -
Mybatis_第七部分:Mybatis缓存
1、第⼀次发起查询⽤户id为1的⽤户信息,先去找缓存中是否有id为1的⽤户信息,如果没有,从 数据库查询⽤户信息。得到⽤户信息,将⽤户信息存储到⼀级缓存中。2、 如果中间sqlSession去执⾏commit操作(执⾏插⼊、更新、删除),则会清空SqlSession中的 ⼀级缓存,这样做的⽬的为了让缓存中存储的是最新的信息,避免脏读。3、 第⼆次发起查询⽤户id为1的⽤户信息,先去找缓存中是否有id为1的⽤户信息,缓存中有,直 接从缓存中获取⽤户信息。原创 2023-06-05 22:30:23 · 99 阅读 · 0 评论 -
Mybatis_第六部分:Mybatis注解开发
的核⼼配置⽂件,我们使⽤了注解替代的映射⽂件,所以我们只需要加载使⽤了注解的Mapper接⼝即可。⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户。⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户。⽤户表和⻆⾊表的关系为,⼀个⽤户有多个⻆⾊,⼀个⻆⾊被多个⽤户使⽤。⼀对⼀查询的需求:查询⼀个订单,与此同时查询出该订单所属的⽤户。⼀对多查询的需求:查询⼀个⽤户,与此同时查询出该⽤户具有的订单。多对多查询的需求:查询⽤户同时查询出该⽤户的所有⻆⾊。原创 2023-06-05 22:10:27 · 58 阅读 · 0 评论 -
Mybatis_第五部分:Mybatis复杂映射开发
⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户。⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户。⽤户表和⻆⾊表的关系为,⼀个⽤户有多个⻆⾊,⼀个⻆⾊被多个⽤户使⽤。⼀对⼀查询的需求:查询⼀个订单,与此同时查询出该订单所属的⽤户。⼀对多查询的需求:查询⼀个⽤户,与此同时查询出该⽤户具有的订单。多对多查询的需求:查询⽤户同时查询出该⽤户的所有⻆⾊。代表当前订单从属于哪⼀个客户。代表当前订单从属于哪⼀个客户。代表当前⽤户具备哪些订单。代表当前⽤户具备哪些订单。原创 2023-06-05 21:57:06 · 50 阅读 · 0 评论 -
Mybatis_第四部分:Mybatis配置⽂件深⼊
它从来不提交或回滚⼀个连接,⽽是让容器来管理事务的整个⽣命周期(⽐如 JEE。的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作⽤域。⽂件,该标签可以加载额外配置的 properties⽂件。实际开发中,习惯将数据源的配置信息单独抽取成⼀个。是动态变化的,此时在前⾯的学习中我们的 SQL。都是⽐较简单的,有些时候业务逻辑复杂时,我们的。框架已经为我们设置好的⼀些常⽤的类型的别名。:代表遍历集合的每个元素,⽣成的变量名。我们根据实体类的不同取值,使⽤不同的。数据库环境的配置,⽀持多环境配置。原创 2023-06-05 21:48:36 · 66 阅读 · 0 评论 -
Mybatis_第三部分:Mybatis基本应⽤
应⽤服务器的上下⽂)。它从来不提交或回滚⼀个连接,⽽是让容器来管理事务的整个⽣命周期(⽐如 JEE。在这⾥你会看到所有执⾏语句、提交或回滚事务和获取映射器实例的⽅法。框架根据接⼝定义创建接⼝的动态代理对象,代理对象的⽅法体同上边Dao。的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作⽤域。:这个数据源的实现只是每次被请求时打开和关闭连接。或应⽤服务器这类容器中使⽤,容器可以集中或在外部配。层的开发,这种⽅式是我们后⾯进⼊企业的主流。的核⼼⽂件的输⼊流的形式构建⼀个。:这个数据源的实现是为了能在如。原创 2023-06-05 21:32:49 · 52 阅读 · 0 评论 -
Mybatis_第⼆部分:Mybatis相关概念
框架完成映射后,程序员既可以利⽤⾯向对象程序设计语⾔的简单易⽤性,⼜可以利⽤关系数据库的技术优势。框架后,应⽤程序不再直接访问底层数据库,⽽是以⾯向对象的⽅式来操作持久化对象,⽽ORM。框架实现的效果:把对持久化对象的保存、修改、删除等操作,转换为对数据库的操作。框架是⾯向对象设计语⾔与关系数据库发展不同步时的中间解决⽅案。编码进⾏分离,功能边界清晰,⼀个专注业务,⼀个专注数据。是⼀个半⾃动化的持久层框架,对开发⼈员开说,核⼼。完成⾯向对象的编程语⾔到关系数据库的映射。把关系数据库包装成⾯向对象的模型。原创 2023-06-05 21:16:34 · 41 阅读 · 0 评论 -
Mybatis_第⼀部分:⾃定义持久层框架
操作数据库带来的⼀些问题:例如频繁创建释放数据库连接,硬编码,⼿动封装返回结果集等问题,但是现在我们继续来分析刚刚完成的⾃定义框架代码,有没有什么问题?读取完成以后以流的形式存在,我们不能将读取到的配置信息以流的形式存放在内存中,不好操作,可以创建javaBean。变化导致解析代码变化,系统不易维护,如果能将数据 库记录封装成pojo。③使⽤反射、内省等底层技术,⾃动将实体与表进⾏属性与字段的⾃动映射。语句在代码中硬编码,造成代码不易维护,实际应⽤中。的实现类中存在重复的代码,整个操作的过程模板重复。原创 2023-06-05 21:04:22 · 49 阅读 · 0 评论 -
tkMapper
提供了很多第三⽅插件,这些插件通常可以完成数据操作⽅法的封装。接⼝中定义的⽅法也是有规律的,不同点就是实体类型不同。因此如果我们要完成对单表的操作,只需⾃定义。实体类与数据表存在对应关系,并且是有规律的。接⼝定义的数据库操作⽅法因为使⽤了泛型,逆向⼯程,根据创建好的数据表,⽣成实体类、已经完成了对单表的通⽤操作的封装,封装在。的基础上提供了很多⼯具,让开发变得简。的相同操作的映射⽂件也是有规律可循。提供了针对单表通⽤的数据库操作⽅法。根据数据表⽣成实体类、⽣成映射⽂件。逆向⼯程(根据数据表⽣成实体类、原创 2022-09-14 20:59:37 · 196 阅读 · 0 评论 -
Mybatis-Plus 详解
官⽹:或介绍(简称MP)是⼀个MyBatis的增强⼯具,在MyBatis的基础上只做增强不做改变,-为简化开发、提⾼效率⽽⽣。原创 2022-10-07 20:49:03 · 11959 阅读 · 1 评论 -
Mybatis 高级进阶
JDBC问题总结: 原始jdbc开发存在的问题如下: 1、 数据库连接创建、释放频繁造成系统资源浪费,从⽽影响系统性能。 2、 Sql语句在代码中硬编码,造成代码不易维护,实际应⽤中sql变化的可能较⼤,sql变动需要改变 java代码。 3、 使⽤preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不⼀定,可能 多也可能少,修改sql还要修改代码,系统不易维护。 4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统原创 2022-10-07 01:33:04 · 252 阅读 · 0 评论