博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis generator插件开发
阅读量:5061 次
发布时间:2019-06-12

本文共 4652 字,大约阅读时间需要 15 分钟。

mybatis现在普遍使用的每一个人DAO框架。mybatis generator它可以基于数据库中的表结构,生成自己主动mybatis代码和配置文件,方便使用,当然,实际的使用过程中。generator当然,也有很多不尽人意的地方,幸运的是,他提供了一种机制插头,来帮我们做扩大。

解说的插件开发依赖下面mybatis版本号:

org.mybatis
mybatis
3.2.2
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
首先我们的插件类须要扩展PluginAdapter类,例如以下:

public class PaginationPlugin extends PluginAdapter {
pluginAdapter提供了全部的接口,方便我们在插件进行到某个操作的时候。做自己定义的改动。这里我们主要介绍下面几类方法:

 
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,                                              IntrospectedTable introspectedTable)
 
public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(            XmlElement element, IntrospectedTable introspectedTable)
 
modelExampleClassGenerated方法顾名思义。就是生产modelExample类时的扩展,了解generator的都知道。他会帮你生产mapper、model、example三类java对象,当中example类是辅助我们用代码的方式来生产sql的,这个modelExampleClassGenerated方法就是在生产example的时候起效果的。

比方。原有的generator1.3.2插件不支持分页,那我们能够首先在modelExampleClassGenerated方法中。对生产的Class加上limit的參数,代码例如以下:

CommentGenerator commentGenerator = context.getCommentGenerator();        Field field = new Field();        field.setVisibility(JavaVisibility.PROTECTED);        field.setType(FullyQualifiedJavaType.getIntInstance());        field.setName(name);        field.setInitializationString("-1");        commentGenerator.addFieldComment(field, introspectedTable);        topLevelClass.addField(field);        char c = name.charAt(0);        String camel = Character.toUpperCase(c) + name.substring(1);        Method method = new Method();        method.setVisibility(JavaVisibility.PUBLIC);        method.setName("set" + camel);        method.addParameter(new Parameter(FullyQualifiedJavaType                .getIntInstance(), name));        method.addBodyLine("this." + name + "=" + name + ";");        commentGenerator.addGeneralMethodComment(method, introspectedTable);        topLevelClass.addMethod(method);        method = new Method();        method.setVisibility(JavaVisibility.PUBLIC);        method.setReturnType(FullyQualifiedJavaType.getIntInstance());        method.setName("get" + camel);        method.addBodyLine("return " + name + ";");        commentGenerator.addGeneralMethodComment(method, introspectedTable);        topLevelClass.addMethod(method);
如代码所看到的,事实上我们就是定义了一个private int limitStart的属性,并加入了get和set方法。

加入完example的属性后,我们须要将这个属性加到生成的mapper xml配置文件里。

这就用到sqlMapSelectByExampleWithBLOBsElementGenerated方法,当然,注意这种方法的名字,我们想改动哪个xml文件里的sql,就须要找到相应的方法来复写。

XmlElement isNotNullElement = new XmlElement("if"); //$NON-NLS-1$        isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitStart>-1")); //$NON-NLS-1$ //$NON-NLS-2$        isNotNullElement.addElement(new TextElement(                "limit ${limitStart} , ${limitEnd}"));        element.addElement(isNotNullElement);
如上述代码,我们在生成的xml文件里。增加一个if条件推断,推断假设当前example类的limitStart和limitEnd不为-1。注意这个-1是我们在example扩展字段时候加上的默认值。假设不是默认值。那么就加上limit ${limitStart}, ${limitEnd}分页条件。

如上所述,就是这么简单。我们能够对生成的mybatis java代码、xml配置做自己的改动。

以下看一下,怎样来使用该插件。

我们首先须要在使用generator的projectpom文件里增加generator插件,并将我们的插件包依赖加进来,这里我们的样例是mybatis-page-plugin。

install
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
generatorConfig.xml
true
true
mysql
mysql-connector-java
5.1.6
org.duoku.groom
mybatis-page-plugin
1.0-SNAPSHOT
如配置所述,我们的插件配置文件是generatorConfig.xml。我们来看一下这个文件:

--> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> <plugin type="org.duoku.groom.mybatis.plugin.PaginationPlugin"></plugin>

如上图所看到的。我们在plugin中,加上我们的插件,PaginationPlugin。

此,我们可以使用这个插件。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/mfrbuaa/p/4654298.html

你可能感兴趣的文章
今时不同往日:VS2010十大绝技让VS6叹服
查看>>
设计器 和后台代码的转换 快捷键
查看>>
在线视频播放软件
查看>>
用代码生成器生成的DAL数据访问操作类 基本满足需求了
查看>>
28初识线程
查看>>
Monkey测试结果分析
查看>>
Sublime Text 3 设置
查看>>
浅谈C++底层机制
查看>>
STL——配接器、常用算法使用
查看>>
第9课 uart
查看>>
Range和xrange的区别
查看>>
BZOJ 1010 [HNOI2008]玩具装箱 (斜率优化DP)
查看>>
java-动态规划算法学习笔记
查看>>
STL容器之vector
查看>>
Linux 内核中断内幕
查看>>
DNS负载均衡
查看>>
无法向会话状态服务器发出会话状态请求
查看>>
数据中心虚拟化技术
查看>>
Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法
查看>>
01入门
查看>>