
为什么是MybatisSSH或者SSM是不是过时了不论是传统的SSH或者SSM还是现在的主流spring boot或者spring clouddubbo等都离不开ORM框架。现代开发者很少去使用jdbc直接操作数据库而是通过ORM框架。SSH通常使用 Struts2为控制器(controller) spring 为事务层(service) hibernate 负责持久层daoSSM通常使用 springMVC为控制器(controller) spring 为事务层(service) MyBatis 负责持久层dao有人会说SSH或者SSM不是已经是老黄历了吗老黄历确实要更新我们不妨把SSH更新为:SSM通常使用 springMVC为控制器(controller) spring 为事务层(service) hibernate 负责持久层dao)但还是太老对不对那我们不妨把spring boot的包裹的外壳脱掉看看它的核心是什么我们最终发现不管是使用JPA(底层是Hibernate后面章节会专门来讨论JPA和hibenate的关系)还是mybatis-spring-boot-starter最终访问数据库的要么是Mybatis要么是Hibernate或者Spring jdbc(极少)。为什么国内公司首选Mybatis而不是Hibernate工作中使用过JPA(Hibernate)但我更喜欢Mybatis主要原因有以下几点Mybatis上手快。国内的产品信奉快糙猛JPA适合业务模型固定的场景适合比较稳定的需求淘汰Mybatis简洁易使用。JPA入门简单因封装太多要踩的坑太多。淘汰Mybatis卓越的性能。简单的封装不影响复杂查询的性能JPA对复杂查询的性能调优支持不够好,淘汰Mybatis排查bug容易。Mybatis写在配置文件或者注解里出现问题可以随时找到JPA层层封装排除问题难度大淘汰。另外还有一些其它好处对应不满足JDBC规范的遗留老数据库可以方便支持。可以方便的和springspring bootGuice框架集成支持第三方缓存插件最熟悉的陌生人–Mybatis很多人用了多年的Mybatis有没有自己的独门绝技还是碰到问题还是百度第一我仅仅使用一个金字塔模型来说说使用框架者的水平不足之处敬请指正。大部分人对工作中用的框架仅仅是使用仿照别人或者网上的例子按部就班的工作碰到不懂的问题就去问别人或者网上搜索得到不同的答案不能分辨哪个是正确的只能一个个的去尝试这就是我们常说的CRUDer一般工作0~3年常见。一小部分人突破了这一层有一定的技术积累。对常见的问题能很快根据异常定位到错误原因能不依赖别人或者网络独立完成工作我们通常称这部分人为合格的软件工程师一般工作3~5常见。还有一部分人走的更高能深入到使用的工具内部原理积累了一些独门绝技碰到疑难杂症也可以游刃有余得心应手。这部分人一般我们常称之为大神一般多见于工作经验5年以上的程序员。你处于哪个阶段呢通过本专栏你将获得面试中从容面对面试官的Mybatis的考验招数上有攻有守的不再一味挨打工作中Mybatis各种功能集萃轻松应对业务的各种需求不需要碰到问题就问人或者尝试网上的各种未经验证的解决方案提升工作效率减少996掌握mybatis的底层原理即使工作拧螺丝也可以拧出花来。超越Mybatis本身了解HibernateJPA等其它orm框架的本质理解底层的JDBC协议层。理解Mybatis的设计模式举一反三学习其他框架可以得心应手。内容简介本专栏分六个部分来展开第一部分从一个常见面试问题引申出mybatis是如何找到sql并执行的。并把我们常见的orm框架mybatishibernatejpaSpring jdbcTemplate各做个一个实例然后进行了对比它们的优缺点。第二部分以面试或者工作中碰到的问题为引子使用实例实现了Mybatis最常使用的功能让你面试工作两不误第三部分引入了mybatis的一些高级功能掌握这些你就可以在工作中游刃有余或者面试时给面试官展示一下你的技术深度第四部分针对一些喜欢追根究底的面试官你也不用紧张学上几招来量量他的深度第五部分既然面试要造航母我们也要搞搞航母的架构原理。第六部分学了这么久要不要下山闯江湖试试十八罗汉阵吧适宜人群适用于0~8年以工作经验的初中高级开发1.有一定的java基础为了以后工作需要想要学习Mybatis不知道如何入手Say NO!2.仅限于mybatis的使用慢慢变成了所谓的CRUDer想要提升技术水平但不知如何入手Say NO!3.为了面试需要艰难困苦的记忆着内部原理不能消化吸收Say NO!4.想要系统的学习Mybatis一页一页的翻着mybatis的官方文档和英文做艰苦卓绝的对抗最终从入门到放弃Say NO!5.想要探究mybatis源码本身但无从下手debug中慢慢迷失方向忘记初心Say NO!