开发3年入职饿了么P6,全靠这份MyBatis学习笔记了

2024年Mybatis框架技术总结(二),阿里P8Java架构师谈 既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。 阅读详情

前言

相信大部分程序员工作中都有接触过MyBatis,那么它到底重不重要呢?答案是肯定的呀!

互联网公司基本都是用Mybatis做为持久层框架的,所以,Mybatis是一定要学的!!!

不管是在工作中还是面试中都会牵扯到Mybatis。

但是,你对它了解吗?了解多少呢?有多了解?工作遇到能解决吗?面试问到能回答上来吗?

废话不多少,让我们一起来看看Mybatis的神秘之处吧~

一、MyBatis 是什么?

MyBatis的前身是 iBatis,iBatis是Apache软件基金会下的一个开源项目。2010年该项目从Apache基金会迁出,并改名为MyBatis。同期,iBatis停止维护。MyBatis是一种半自动化的Java持久层框架(persistenceframework),其通过注解或XML的方式将对象和SQL关联起来。之所以说它是半自动的,是因为和Hibernate等一些可自动生成SQL的ORM(ObjectRelationalMapping)框架相比,使用MyBatis需要用户自行维护SQL。维护SQL的工作比较繁琐,但也有好处。比如我们可控制SQL逻辑,可对其进行优化,以提高效率。

二、Mybatis的优点

基于sql语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,sql写在xml 里,解除sql与程序代码的耦合,便于统一管理;提供xml标签,支持编写动态sql语句,并可用。与jdbc相比,减少了50%以上的代码量,消除 jdbc大量冗余的代码,不需要手动开关连接;很好的与各种数据库兼容(因为 mybatis 使用jdbc来连接数据库,所以只要jdbc支持的数据库Mybatis都支持)。能够与spring很好的集成;提供映射标签,支持对象与数据库的orm字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

三、为什么要使⽤ MyBatis

1.1我们在使用 Java 程序访问数据库时,有多种可选方案。

比如我们可通过编写最原始的JDBC 代码访问数据库,或是通过Spring提供的JdbcTemplate访问数据库。除此之外,我们还可以选择Hibernate,亦或是本书的主角MyBatis 等。在有多个可选项的情况下,我们为什么选择MyBatis呢?要回答这个问题,我们需要将MyBatis与这几种框架对比一下,高下立判。当然,技术之间一般没有高下之分。从应用场景的角度来说,符合应用场景需求的技术才是合适的选择。接下来我们通过写代码的方式,来对比这几种数据库访问技术的优缺点,并在最后说明MyBatis的适用场景。这里先把本节所用到的一些公共类和配置贴出来,后面但凡用到这些类和配置的地方,大家可以到这里进行查看。如下:

public class Article {
private Integer id;
private String title;
private String author;
private String content;
private Date createTime;
// 省略 gettertter 和 toString
}

数据库相关配置放在了jdbc.properties 文件中,详细内容如下:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/myblog?useUnicode=true ……
jdbc.username=root
jdbc.password=****

表记录如下:

1.2.使⽤MyBatis访问数据库

前面说过,MyBatis是一种半自动化的Java持久层框架,需要用户自行维护 SQL。这里,我们把SQL放在 XML 中,文件名称为ArticleMapper.xml。如下:

 <mapper namespace="xyz.coolblog.chapter1.dao.ArticleDao">
       <select id="findByAuthorAndCreateTime" resultType="Article">
               SELECT
                      `id`, `title`, `author`, `content`, `create_time`
               FROM
                      `article`
               WHERE
                      `author` = #{author} AND `create_time` > #{createTime}
     <lect>
</mapper>

上面的SQL用于从article表中查询出某个作者从某个时候到现在所写的文章记录。在MyBatis中 ,SQL映射文件需要与数据访问接口对应起来,比如上面的配置对应
xyz.coolblog.dao.ArticleDao接口,这个接口的定义如下:

public interface ArticleDao {
       List<Article> findByAuthorAndCreateTime(@Param("author") String author, 
             @Param("createTime") String createTime);
}

要想让MyBatis跑起来,还需要进行一些配置。比如配置数据源、配置SQL映射文件的位置信息等。本节所使用到的配置如下:

<configuration>
        <properties resource="jdbc.properties"/>
        <typeAliases>
                 <typeAlias alias="Article"
                           type="xyz.coolblog.chapter1.model.ArticleDO"/>
                 <typeAlias alias="Author" type="xyz.coolblog.model.AuthorDO"/>
<peAliases>
<environments default="development">
          <environment id="development">
                 <transactionManager type="JDBC"/>
                 <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/>
                        <property name="url" value="${jdbc.url}"/>
                        <property name="username" value="${jdbc.username}"/>
                       <property name="password" value="${jdbc.password}"/>
                      </dataSource>
                     </environment>
               </environments>
           <mappers>
                    <mapper resource="chapter1/mapper/ArticleMapper.xml"/>
           </mappers>
</configuration>

总结

下面这个图是Mybatis的一个思维导图知识点总结,大家需要可以自取。

一些常见Mybatis面试题都整理成了PDF文档(含答案)

1.# {}和${}的区别?

2.Mybatis都有哪些Executor执行器?它们之间的区别是什么?

3.Mybatis中如何指定使用哪一种Executor执行器?

4.Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

5.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

6.模糊查询like语句该怎么写?

7.分页方式?

8.pageHelper原理?

9.模糊查询like语句该怎么写?

10.通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

11.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

12.Mybatis 中一级缓存与二级缓存的区别?

13.MyBatis中所有标签?

14.简述Mybatis的插件运行原理,以及如何编写一个插件。

15.如何执行批量插入?

16.如何获取自动生成的(主)键值?

17.在mapper中如何传递多个参数?

18.缓存类介绍

19.植⼊插件逻辑

20.实现⼀个分页插件

.........

Mybatis面试知识点脑图展示

Mybatis面试知识点脑图展示

以上提到的面试题解析Mybatis文档,以及Mybatis知识点思维导图都可以分享给小伙伴们

告别Modern Standby噩梦:Win11睡眠断网冻结的根源剖析与S3睡眠回归实战 本文深入剖析了Windows 11中Modern Standby(现代待机)模式导致睡眠后断网、系统冻结等问题的根源,指出其与硬件驱动、后台活动的兼容性矛盾。文章提供了通过修改注册表键值强制系统回归稳定S3睡眠状态的详细实战步骤,帮助用户彻底解决睡眠故障,实现可靠的远程访问与挂机任务。 阅读详情

相关推荐

无线自组织网络基础知识

参考书籍:《无线自组织网络路由协议及应用》 目录第一章 绪论1.1 无线自组织网络概述1.1.1 无线自组织网络的定义及分类1.1.2无线自组织网络的主要特点1.1.3无线自组织网络的应用与发展1.无线自组织网络的应用2.无线自组织网络的起源和发展1.2典型的无线自组织网络1.2.1移动Ad Hoc网络1、移动Ad Hoc网络的定义2.移动AdHoc网络的特点3.移动Ad Hoc网络的应用1.2....

逸凌Time 2万+

吃透这份pdf,拿下阿里、腾讯等大厂心仪offer(Java岗)!

前言 最近一位年前裸辞的朋友来找我诉苦,说因为疫情原因现在都在家吃老本。本想着年后就来找工作的,但是现在这个情况也不好找,而且很多公司也随着这次疫情面临着资金紧缺导致裁员严重的甚至倒闭,导致很多人失业找不到工作,就更加竞争压力大了 朋友说自己实力不过关,很多面试题都答不上,问我有没有之前的面试总结,于是我给了他这份(核心知识点)还有一些面试题总结。现在他拿到了offer,我觉着这个文档对大家应该也有帮助,现在分享给大家! 这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基

Java码农那些事 366

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1552

手把手教你springboot整合mybatis+vue+饿了么实现增删改查从0到1适合初学者

创建springboot 工程 添加pom 架构 springboot + mybatis + mysql + lombok + vue + 饿了么 前期准备工作 先创建后台springboot 改jdk版本 改包名 选几个常用 我通常用的都是yml 所以我把 properties删除 创建一个yml 文件 dev 里面的代码 server: port: 7000 logging: level: root: info c

Joe world的博客 3083

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

从零配置ORB-SLAM3:TUM-VI数据集yaml文件参数调优指南

本文深入解析了ORB-SLAM3在TUM-VI数据集上的yaml配置文件参数调优方法。针对双目惯性模式,详细拆解了相机标定、IMU噪声模型和ORB特征提取三大模块的关键参数,解释了其原理与影响,并通过实战案例展示了如何通过调整特征点数量、FAST阈值及IMU噪声参数,有效提升系统在低纹理环境下的鲁棒性和轨迹精度。

weixin_29071809的博客 152

饿了么、口碑、盒马生鲜合并,阿里新零售双线策略初显

据外媒报道,阿里巴巴集团计划将送餐平台饿了么、生活方式服务口碑与盒马鲜生进行合并,外界纷纷猜测这是阿里要与美团点评做进一步的对抗。在此之前阿里就收购了饿了么为一大王牌,并且投资点我达大礼包发展本地生活服务版图,种种策略,都在表明阿里想在本地生活消费这种战役中打赢美团点评的决心。 口盒合并彰显阿里要打赢本地生活消费战役决心 众所周知,早在2016年马云提出新零售的时候就说过,纯电商将死新零售...

京比特的博客 799

Fortran基础编程(3)——格式化输出

本篇推文将进一步讲解Fortran基础语法中格式化输出与声明部分,让我们的代码更加美观起来吧~

qq_45715554的博客 3827

开发3年入职饿了么P6,全靠这份MyBatis学习shouce

相信大部分程序员工作中都有接触过MyBatis,那么它到底重不重要呢?答案是肯定的呀! 互联网公司基本都是用Mybatis做为持久层框架的,所以,Mybatis是一定要学的!!! 不管是在工作中还是面试中都会牵扯到Mybatis。 但是,你对它了解吗?了解多少呢?有多了解?工作遇到能解决吗?面试问到能回答上来吗?

老男孩的架构路 97

高通平台开发系列讲解(USB篇)MBIM协议详解

📢本文主要介绍高通平台USB网卡MBIM协议。

内核笔记 5440

准备生日礼物

摘要: 题目要求统计某月份需要准备的员工生日礼物数量。输入包括目标月份、员工姓名列表和对应的生日列表(格式为Year/Month/Day)。需处理重复员工(以最后一次录入为准),统计该月生日的员工人数。示例1中5月有3名员工生日,输出3;示例2中10月有6名,输出6。解题关键在于使用哈希表去重(以员工姓名为键),拆分生日字符串提取月份进行匹配。代码实现(C++/Java/Python)均遵循以下步骤:读取输入、哈希去重、解析月份并统计目标月份人数。时间复杂度为O(n),空间复杂度O(n)。

面试高手的博客 300

开发3年入职阿里P6,全靠这份“MyBatis学习笔记了”

前言 相信大部分程序员工作中都有接触过MyBatis,那么它到底重不重要呢?答案是肯定的呀! 互联网公司基本都是用Mybatis做为持久层框架的,所以,Mybatis是一定要学的!!! 不管是在工作中还是面试中都会牵扯到Mybatis。 但是,你对它了解吗?了解多少呢?有多了解?工作遇到能解决吗?面试问到能回答上来吗? 废话不多少,让我们一起来看看Mybatis的神秘之处吧~ 一、MyBatis 是什么? MyBatis的前身是 iBatis,iBatis是Apache软件基金会.

Java6888的博客 236

【Altium Designer】Off grid pin解决方法

​今天我画完原理图编译时,出现了太多的黄色(出现warning警告提示)Off grid pin警告,这个警告并不是原理图电气连接出问题了,而是元器件或器件PIN脚没有和栅格对齐造成的原因。再编译还是出现这个警告。 最后经过不断翻阅网上经验和实践,才最终解决,本经验详细记录了解决该警告的有效方法。 解决方案:以下是问题解决步骤... ​

夜半少年的博客 7550

2024年面试会更难?Java必备209道真题,这份清单助你轻松入阿里

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84102892的博客 587

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

月薪 6k 涨到 15k,全靠这份面试手册

2021 年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,奈何难抽出时间,这套 1000+道的 Java 面试手册我整理了整整 1 个月,上传到 Git 上目前 star 数达到了 30K+ 这套互联网 Java 工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java 面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题(共 485 页,32W 字) 阿里

shyyyyyyyyyyy的博客 243

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2024年2024年蚂蚁金服面经(Java岗、交叉面、P6+、已入职,多线程面试题高级程序开发

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

2401_84103844的博客 1055

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mybatis 入参 参数 Map List

mybatis,入参,list,map

global_coding的博客 2846

98年阿里P6架构师晒出工资单,看完扎心了。。。

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后的薪资,税前估计超过6万了。 从曝光的截图来看,这薪资水平已经秒杀了绝大部分工薪阶层,甚至有些企业的高层都拿不到这样的薪资。在随后的跟帖中,这名阿里前员工表示自己以前在阿里是P7级别,现在跳槽到新公司后,主要做架构方面,总包是200多万,含股票奖金,总体比阿里还是要高一些。但具体是哪家公司,哥们并没有透露过多的信息。 后面经

qq_42986622的博客 3659

上个月我拿到阿里P7offer,全靠这份2021最新面试题!

STAR法则(Situation Task Action Result) Situation: 事情是在什么情况下发生; Task:: 你是如何明确你的任务的; Action: 针对这样的情况分析,你采用了什么行动方式; Result: 结果怎样,在这样的情况下你学习到了什么。 简而言之,STAR法则,就是一种讲述自己故事的方式,或者说,是一个清晰、条理的作文模板。不管是 什么,合理熟练运用此法则,可以轻松的对面试官描述事物的逻辑方式,表现出自己分析阐述问题的清 晰性、条理性和逻辑性。 FAB 法则(Fea

weixin_56412033的博客 1560

【SSM】Spring学习笔记3:Spring整合MyBatis和Junit

这一小节的阅读需要一定的。Mybatis主要通过一个核心配置文件(xml文件)来进行数据源的配置和映射管理。映射指的是将一些方法和具体的sql语句绑定起来,使得执行方法的时候自动连接到数据库执行sql语句。具体映射主要通过映射文件进行配置,或者使用注解进行配置。使用注解的方式更加便捷,因此例子中映射方式使用的是注解的形式。

2301_76391858的博客 927

阿里工作6年,熬到P7就剩这份学习笔记了,已助朋友拿到7个Offer

在阿里工作了6年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等7个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elastic

ppItStudy的博客 170

2024年Java最全Shiro之详细入门附Demo,25岁成功入职阿里P7的小哥哥告诉你

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取;在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。

2401_84689803的博客 736

Mybatis入参的几种方式

转载链接 Mybatis入参的几种方式_hans的博客-优快云博客_mybatis 入参 我这里的格式没上面的链接清楚,可以直接去链接 这里主要研究研究向Mybatis中传参的几种方式。总结一下,顺便记录在此。 1.实体类入参 dao方法 public void addAdmin(Admin admin); mapper中 <insert id="addAdmin" parameterType="com.znkj.entity.Admi...

qq_34823218的博客 4459
上一篇: 纳尼?华为首席架构师只用434页笔记,就将网络协议给拿下了
下一篇: 独家干货!腾讯T3-3手写8W字Tomcat体系架构,从性能优化到源码底层
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值