美文网首页
Mybatis-Generator 扩展支持链式编程

Mybatis-Generator 扩展支持链式编程

作者: 灵技阁 | 来源:发表于2019-05-17 11:14 被阅读0次

上次,有同事问我,现在链式编程已经很普遍了,自动生成的set方法一般都不支持链式,有没有什么好的办法呢?

其实,我们在使用lombok@Setter的时候,同时添加@Accessors(chain = true)注解,被注解的对象就自动支持链式了.

这里要说的是,在我们使用Mybatis-Generator反向生成代码时,如何使生成的model支持链式呢?

我们知道,Mybatis-Generator提供了PluginAdapter让我们进行扩展(此类请读者自行了解,这里不再进行介绍),而类中,我们可以看到,PluginAdapter有一个方法modelSetterMethodGenerated,显然,我们通过命名就已经得知此方法是model的setter方法生成扩展.
由此,我们可以尝试下:

/**
 *
 *
 * @author Marvis
 * @ClassName EntityChainPlugin
 * @Description
 */
public class EntityChainPlugin extends PluginAdapter {

    @Override
    public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass,
                                              IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable,
                                              ModelClassType modelClassType) {

        method.setReturnType(topLevelClass.getType());
        method.addBodyLine("return this;");
        return super.modelSetterMethodGenerated(method, topLevelClass, introspectedColumn, introspectedTable, modelClassType);
    }

    /**
     * This plugin is always valid - no properties are required
     */
    @Override
    public boolean validate(List<String> warnings) {
        return true;
    }
}

然后在generatorConfig.xml中的<context>标签节点下添加:

<plugin type="run.override.EntityChainPlugin "/>

好了,运行跑跑看:

@SuppressWarnings("serial")
public class Agent implements Serializable {
   //   ....省略...
    /**
     * @param id : ID
     */
    public Agent setId(Long id) {
        this.id = id;
        return this;
    }
     // ....省略...
}

得到了我们想要的效果.
完事,收工~~嘿嘿嘿

相关文章

  • Mybatis-Generator 扩展支持链式编程

    上次,有同事问我,现在链式编程已经很普遍了,自动生成的set方法一般都不支持链式,有没有什么好的办法呢? 其实,我...

  • 编程思想-链式编程

    编程思想-链式编程 链式编程(链式调用)的主要表现是支持点语法结构的代码,代表库可以参照 Masonry 或 Sn...

  • Curl 在 Swoole 协程中的解决方案

    使用YurunHttp扩展 YurunHttp 是开源的PHP HTTP类库,支持链式操作,简单易用。 支持所有常...

  • jQuery 链式编程

    jQuery 链式编程 链式编程原理 链式编程代码示例 隐式迭代

  • Unity3D 使用链式编程思想的Timer Trigger

    谈到链式编程,大家都会想到方法扩展,具象一些,就是想到DoTween,但是DoTween链式思想里面还有个很有意思...

  • 链式编程思想

    链式编程思想 链式编程思想

  • iOS 链式编程

    链式编程 主要介绍链式编程原理,以及如何创建链式编程 编程范式 在介绍链式编程之前,首先来了解下什么是编程范式。 ...

  • Gilde小结

    by hzwusibo 20190504 优点: 支持gif 链式调用 ( 编程性强、 可读性强 、 代码简洁)...

  • GPUImage源码分析与使用(一)

    GPUImage简介 GPUImage是链式编程,可以处理图片和视频,支持iOS和Mac。 GPUImage1.0...

  • 怎么编写jquery插件

    原则:1.从$.fn进行扩展2.支持链式调用,返回this3.给定默认配置4.支持修改默认配置 例子:zTree就...

网友评论

      本文标题:Mybatis-Generator 扩展支持链式编程

      本文链接:https://www.haomeiwen.com/subject/pklnaqtx.html