1.MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
2.MyBatis-Plus代码生成器(3.5.1版本)
3.阿里技术官架构使用总结:Spring源码+MyBatis源码+Tomcat架构解析等
MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
Plugins
MyBatis允许在特定点拦截映射语句执行调用。码下默认情况下,码下MyBatis允许通过插件来拦截方法调用。码下这些类方法的码下详细信息可以通过查看每个方法的签名来发现,它们的码下源代码存在于MyBatis发行包中。理解覆盖方法的码下安卓顶级拦截码源码行为至关重要,因为修改或覆盖可能会打破MyBatis的码下核心功能。谨慎使用插件。码下
插件示例:打印每条SQL语句及其执行时间
实现插件以打印每条真正执行的码下SQL语句及其执行时间。MyBatis日志可以记录SQL,码下但存在一些问题。码下编写MyBatis插件很简单,码下只需实现Interceptor接口。码下
插件代码示例:
注解@Intercepts和@Signature是码下必需的,因为Plugin的码下wrap方法会取用这两个注解的参数。@Intercepts中定义多个@Signature,表示符合特定条件的方法会被拦截。
选择StatementHandler进行拦截,fragmentmanager 源码而不是Executor,原因是StatementHandler允许访问SQL语句和参数,而Executor更侧重于执行操作。此外,StatementHandler提供更细粒度的控制。
使用setProperties方法配置插件属性,并通过plugin方法生成代理。代理由MyBatis的Plugin类生成,使用Proxy类确保满足方法签名的接口生成代理。
核心是intercept方法,这里实现拦截器的主要逻辑。确保最终返回invocation.proceed(),保持拦截器的层层调用。
配置插件的XML文件
在config.xml中配置插件,简单明了。每个子标签代表一个插件,interceptor表示拦截器的mbstowcs 源码完整路径,具体配置由个人决定。
使用插件实例
配置插件后,即可使用SqlCostInterceptor,这是一个通用插件。尽管CRUD不同,仍可打印完整SQL语句及其执行时间。
插件Demo
插件示例仅作为演示,可能无法覆盖所有场景。需要根据具体需求进行调整。即使不修改代码,插件仍能美化SQL,去除换行符。
总结
MyBatis插件机制强大,用于解决各种问题,如打印SQL语句、记录执行时间、实现分页或分表。monorail 源码编写有效拦截器的关键在于理解接口及其相关方法的功能。
MyBatis-Plus代码生成器(3.5.1版本)
MyBatis-Plus(简称 MP)是Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
特性:pom配置,依赖准备好后,创建Java类,在main()方法中:配置连接mysql数据库信息+调用自动生成API并设置各类参数,根据自定义策略,执行自动生成代码操作。这里新建一个MpGenerator.java,提供主方法main()。
templateConfig我禁用了MP提供的模板,设置成了自己定义的。先看下MP自带的模板。
包路径,servletrequest源码一共支持三种引擎,Velocity对应vm后缀;Beetl对应btl后缀;Freemarker对应ftl后缀
MP自带的模板service,controller等太简单,只是一个文件并没有提供增删改查功能,可以自己配置一个模板替换到自带的。就需要在templateConfig中配置一下。(自带的模板就不贴代码了,有兴趣的自己看一下)
拿controller举例,贴一下我自己配置的。
其实就是把增删改查的外壳设置好,把参数配置成动态的。$ 里面这些参数是哪里来的呢?接下来分析一下
由于我用的是Velocity,看一下它的引擎源码
一共4个方法,看名字大概分析一下,大概率是writer这个方法是主要功能,接下来断点看一下。
模板中配置的动态参数,都是从objectMap取的。
table数据格式,可以看到生成的entity,mapper,service,controller名称,fields取的数据库中字段信息。
是否为主键,字段类型,名称等等。可以根据这些参数来配置我们需要的模板样式。
如果objectMap中的参数不满足我们的要求,可以自己写一个引擎继承VelocityTemplateEngine重写他的writer方法。
我把主键的信息单独取出来了,避免每次循环调用。
自定义配置模板文件,根据MP提供的功能,可以生成entity,mapper,mapperXML,service,serviceImpl,controller。我们可能还需要用到BO,VO等,这时候就需要自定义配置模板了。
模板的定义跟上面说的一样。
简单记录一下自己使用过程的学习,大家有啥想法互相学习。
各个参数详细说明: mybatis-plus代码生成器及配置 - BlogMemory - 博客园
阿里技术官架构使用总结:Spring源码+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有落后可能就会被淘汰掉,因此我们需要不断审视自己,通过学习来提升自己。
对于大多数程序员而言,阿里一直是目标,但进入大厂工作并非易事。今日,由阿里一线P8架构师揭秘,对其使用的技术进行总结,此PDF总结主要涉及Spring源码、MyBatis源码以及Tomcat架构解析等,以期帮助大家提升。
如果你需要PDF版本,可直接点击下方链接免费获取。
第一部分:Spring源码深度解析
一、核心实现
二、企业应用
第二部分:MyBatis源码解析
一、MyBatis入门
二、配置文件解析过程
三、映射文件解析过程
四、SQL执行流程
五、内置数据源
六、缓存机制
七、插件机制
第三部分:Tomcat架构解析
一、Tomcat介绍
二、Tomcat总体架构
三、Catalina
四、Coyote
五、Jasper
六、Tomcat配置管理
七、Web服务器集成
八、Tomcat集群
九、Tomcat安全
十、Tomcat性能调优
十一、Tomcat附加功能
总结:
作为Java程序员,务必不断充实自己的知识储备,关于阿里等一线大厂所使用的技术,应心中有数。
最后,提醒一句,所学知识均为己有,如果你需要这些架构技术使用总结,我愿意免费分享,有兴趣的老铁请点击下方链接免费领取。若支持我这篇文章,不妨点赞+喜欢+收藏一键三连,谢谢!