内卷严重,不懂MyBatis插件开发怎么行,教你实现MyBatis分页插件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内卷严重,不懂MyBatis插件开发怎么行,教你实现MyBatis分页插件相关的知识,希望对你有一定的参考价值。
参考技术A 如果大家对MyBatis源码不熟悉,可以阅读我的这篇文章,专门讲解MyBatis源码阅读的juejin.cn/post/701763…如果大家想知道MyBatis插件怎么融入实际项目,请参考我的开源项目gitee.com/zhuhuijie/b…
插件部分位于base-platform/base-common/common-db-mysql下
感兴趣的点个star,持续更新中...
PreparedStatementHanler 创建PreparedStatement 最常用占位符
CallableStatementHandler 创建CallableStatement 执行存储过程
SimpleStatementHanler 创建Statement 字符串拼接,有SQL注入风险
INSERT sqlSession.insert()
UPDATE sqlSession.update()
DELETE sqlSession.delete()
SELECT sqlSession.select()
executor.query() 调用CachingExecutor【装饰者模式】 真实使用SimpleExecutor--->父类BaseExcutor.query() ---> doQuery()抽象 -->SimpleExecutor.doQuery() 【模板模式】
创建一个委托,根据不同StatementType创建不同的对象new PreparedStatementHanler()
JDBC的Statement stmt = preparedStatementHanler.instantiateStatement() ---> connection.preparedStatement()
handler.parameterize(stmt) 参数处理
ParameterHandler resultSetHandler.handlerResultSets(preparedStatement) 封装结果
MyBatis插件本质上就是对MyBatis四大内置对象的增强。
它是基于MyBatis的拦截器,通过AOP的方式进行使用。
注意拦截器实现的是ibatis包下的,上边的注解决定了我们的拦截器是从MyBatis的哪里进行切入的,然后通过AOP的方式进行扩展。
@ConditionalOnProperty(value = "zhj.plugins.printSql.enable", havingValue = "true", matchIfMissing = false)
依赖
这里我们通过ThreadLocal来设置分页对象
创建注解
Page对象增加开关
在原来的分页拦截器上增加判断条件
通过AOP设置开关
在对应的service或者dao上开启分页
想要对框架进行扩展,首先必须得了解框架源码,只有对源码有较为深入的了解,我们才能更好的把握从哪个点进行切入扩展。本文中的两个案例都是最为简单的实现,说实话,还有很多漏洞,比如第一个打印SQL的插件我们并没有去将参数填充,也没有拿到参数,第二个案例分页,只能满足一些比较简单的场景,如果SQL过于复杂,很可能会出现Bug。这些内容都需要我们不断去学习源码,不断的去学习开源项目,积累的越多,我们写出来的工具越完美。大家可以参考GitHub上MyBatis分页的开源项目,对自己写的分页插件进行不断的完善,当然大家也可以在评论区进行交流,共同学习。
内卷这么严重!学会这些java核心资料,再也不怕行业内卷了
这是最近华为内部论坛很火的一篇文章。
什么是内卷
“内卷化”是近几年来中文网络上特别流行一个词,一般用于形容某个领域中发生了过度的竞争,导致人们进入了互相倾轧、内耗的状态。
例子:需要给国外的朋友写封英文信,并出资30元劳务费,B和C英语水平差不多,都表示愿意接受,那A允许两人竞价获得,于是不断以压缩劳务费来竞价,最终B以五元拿到这个项目,但竞争没有带来实质性的提升,B还是原本的英文水平;这种不良性的竞争没有获得提升,B在内卷中卷赢了,但获得的酬劳却减少了,A因此获利。
内卷化现象出现在各行各业,如何避免内卷呢?有人说开辟新赛道,创造新的竞争,减少无意义的内耗;有人说打破圈子束缚,追求更高的上限,鲁班锯业相信打铁还需自身硬,只有不断学习,提高核心竞争力,以高性价比来占领市场,才能立于不败之地。
现状
聊到内卷,其实IT行业也是一个比较容易出现内卷的行业。知乎上,有个500万+浏览的程序员热帖:程序员未来会成为非常内卷的职业吗?
程序员基本在前三年工作里就掌握基本编程技术,剩下的是在重复 CURD。技术迭代速度很快,很多人龟缩在大公司舒适区中安稳工作,但没有进步就是一种落后了,自然在市场上也毫无竞争力。
硅谷社交网络Hackers/Founders的创始人 JonathanNelson 说过:“如果你已经在一家大公司工作超过10年后遭到解雇,那么你的技术将会落后六个时代。”
那么该如何避免被淘汰?提高自身竞争力。
内卷告诉我们,表面的精细、复杂、讲究不等于高级,更不等于先进。只有站在更高层次上的不断向外突破、创新和创造,才能不让那种精致的、繁复的、看起来特别敬业的内卷化状态困扰我们,才能回归到向上勃发的新常态上来。
幸好很多程序员已意识到这一点,目前很多开发者持续学习的主要路径靠自学,也有一些程序员自学一门新语言、框架或工具。
具体来说,想进大厂拿高薪的小伙伴应如何更好地“刷新”自己技能呢?大家先来看看各个大厂JAVA开发工程师的招聘吧
阿里巴巴:
美团:
京东:
百度:
大厂JAVA开发工程师招聘J从上图可以看出,最核心的就是精通Java语言,然后在此基础上配备其他技能。但大家往往会遇到一个问题:自己掌握的程语言能力还不能够匹配上大厂的标准。
在我看来,造成这种情况的原因,主要有这么两方面:
第一,没有清晰的学习路径,知识碎片化,不成系统。
大多数初中级JAVA工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。
首先要绘制或者找一张JAVA学习的思维导图,这才能系统的去学习,这里分享一下我这些年工作整理的学习思维导图:
第二,缺乏如编程能力,编程思想,算法能力,架构能力胜任。
我在多次与程序员访谈中了解到的一件事是,Java开发人员需要改进他们的套接字编程和网络基础。
我从我的Java网络编程问题列表中问了许多问题,但大部分问题Java开发人员都未能回答上来。
有一些人甚至很难概述TCP和UDP协议之间的关键差异,我认为这对于任何具有2到5年开发经验的Java人员来说都应该是要掌握的。
如果觉得自己没有足够的机会学习Java中的Socket编程,那么我建议至少阅读一本关于Java的书,提升自己。
进阶学习,跳出内卷
为了让大家少走弯路,小编针对大厂面试中Java常见问题做出了一系列全面整理,包含Java基础、性能优化和java面试题精选等内容,让小伙伴们先将主要的应用方向知识点都了解、学习一遍,从而建立编程思维、扎实编程能力,确定学习路径建立完整的知识框架。
模块化学习资源
《Java核心知识点》
《JVM与性能优化知识点整理》
《java面试题_消息中间件--RocketMq(14题)》
提升自己的技术,拒绝内卷,学会这些java核心资料,再也不怕行业内卷了!!!
由于篇幅限制,就不一一展示了,有需要文中以上分享的全部资料完整版的小伙伴们注意啦:一键三连(点赞+收藏+关注)后直接添加微信:mxh5261 即可百分百免费获取
以上是关于内卷严重,不懂MyBatis插件开发怎么行,教你实现MyBatis分页插件的主要内容,如果未能解决你的问题,请参考以下文章
四步教你SpringBoot+Mybatis-plus分页插件(简单实现)
优雅写代码系统springboot+mybatis+pagehelper+mybatisplus+druid教你如何优雅写代码