您的位置 首页 > 数码极客

‘如何修改java源码’java源码如何使用

作者:石臻臻, CSDN博客之星Top5、Kafka Contributor 、nacos Contributor、华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家 、 KnowStreaming。

KnowStreaming 是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力不够的同学,可以联系我,当你导师带你参与开源! 。

我写的代码生成插件Gitee地址 同样是在扩展 Mybatis generator插件的时候,有这样一个需求是需要在生成的,那么 如何修改Ma文件? 跟着Mybatis generator 源码去找一找 哪里可以扩展

1源码分析: 源码入口:Con()

public void generateFiles(Progresscallback callback, List<GeneratedJavaFile> generatedJavaFiles, List<GeneratedXmlFile> generatedXmlFiles, List<String> warnings) throws InterruptedException { if (introspectedTables != null) { for (IntrospectedTable introspectedTable : introspectedTables) { callback.checkCancel(); in(); in(warnings, callback); //这里是 javaFiles的组装地方,主要去看一下introspectedTable .getGeneratedJavaFiles()方法 genera(introspectedTable .getGeneratedjavaFiles()); // genera(introspectedTable .getGeneratedXmlFiles()); //这里预留了插件来生成JavaFile文件; genera(pluginAggregator .contextGenerateAdditionalJavaFiles(introspectedTable)); //这里预留了插件来生成Xml文件; genera(pluginAggregator .contextGenerateAdditionalXmlFiles(introspectedTable)); } } genera(pluginAggregator .contextGenerateAdditionalJavaFiles()); genera(pluginAggregator .contextGenerateAdditionalXmlFiles()); }

2然后进入in()方法

@Override public List<GeneratedJavaFile> getGeneratedJavaFiles() { List<GeneratedJavaFile> answer = new ArrayList<GeneratedJavaFile>(); //javaModelGenerators 存的是 JavaModel 和 JavaModelExample 类 for (AbstractJavaGenerator javaGenerator : javaModelGenerators) { //这一行才是重点,因为所有的准备数据都是在这个方法里面 List<CompilationUnit> compilationUnits = javaGenerator .getCompilationUnits(); for (CompilationUnit compilationUnit : compilationUnits) { GeneratedJavaFile gjf = new GeneratedJavaFile(compilationUnit, con() .getTargetProject(), con), con()); an(gjf); } } // clientGenerators 然后javaModelGenerators 存的是 JavaMa文件 for (AbstractJavaGenerator javaGenerator : clientGenerators) { //这一行才是重点,因为所有的准备数据都是在这个方法里面 List<CompilationUnit> compilationUnits = javaGenerator .getCompilationUnits(); for (CompilationUnit compilationUnit : compilationUnits) { GeneratedJavaFile gjf = new GeneratedJavaFile(compilationUnit, con() .getTargetProject(), con), con()); an(gjf); } } return answer; }

3重点方法:javaGenera();

这个方法是真正填充数据的地方 AbstractJavaGenerator 这个是抽象类,主要是用来生成Java文件的 下面有很多实现类; 比如生成 JavaModel 文件的BaseRecordGenerator JavaModelExample文件的ExampleGenerator Ma文件的JavaMapperGenerator 这个实现类都实现了getCompilationUnits方法;这些方法都在为即将生成的文件组装数据 我们看一下JavaMapperGenerator 中的实现

@Override public List<CompilationUnit> getCompilationUnits() { (getString("Progre;, //$NON-NLS-1$ in().toString())); CommentGenerator commentGenerator = con(); FullyQualifiedJavaType type = new FullyQualifiedJavaType( in()); Interface interfaze = new Interface(type); in); //看到这里喜出望外,这里就是扩展点了;因为它把inerfaze给传进去了,那我们可以在这里做一些我们想做的事情 commen(interfaze); //省略无关......

修改Ma文件


在前几篇文章中我们已经创建了CommentGenerator对象了,那我们可以在这里面来做扩展

@Override public void addJavaFileComment(CompilationUnit compilationUnit) { //生成的是 JavaModel 和 JavaModelExample 文件 if(compilationUnit instanceof TopLevelClass){ //这里可以修改 JavaModel 和 JavaModelExample 文件 /*TopLevelClass topLevelClass = (TopLevelClass)compilationUnit; String shortName = com().getShortName(); ("@Resource"); ("javax.anno;);*/ } //生成的是Ma 文件 if(compilationUnit instanceof Interface){ Interface anInterface = (Interface)compilationUnit; //下面的可以给JavaFile 添加注释 ("/**generator by Shirc generator common.....**/"); String shortName = com().getShortName(); if(shortName!=null("Mapper"))return; //只给JavaModel添加注解就行了,Example不需要 anIn("@Resource"); anIn(new FullyQualifiedJavaType("javax.anno;)); } }

上面的代码中 给Ma 文件添加了注解,如果想改更多,可以按照它的格式来做;

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何修改java源码,java源码如何使用,如何看java源码,如何阅读java源码,如何修改apk源码”边界阅读