重写SerializablePlugin,使mybatis generator生成的Example类也支持实现序列化,支持分布式
This commit is contained in:
parent
47a613f7ae
commit
68a272a3b4
|
@ -0,0 +1,94 @@
|
|||
package com.zheng.common.plugin;
|
||||
|
||||
import org.mybatis.generator.api.IntrospectedTable;
|
||||
import org.mybatis.generator.api.PluginAdapter;
|
||||
import org.mybatis.generator.api.dom.java.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* Created by shuzheng on 2017/1/1.
|
||||
*/
|
||||
public class SerializablePlugin extends PluginAdapter {
|
||||
private FullyQualifiedJavaType serializable = new FullyQualifiedJavaType("java.io.Serializable");
|
||||
private FullyQualifiedJavaType gwtSerializable = new FullyQualifiedJavaType("com.google.gwt.user.client.rpc.IsSerializable");
|
||||
private boolean addGWTInterface;
|
||||
private boolean suppressJavaInterface;
|
||||
|
||||
public SerializablePlugin() {
|
||||
}
|
||||
|
||||
public boolean validate(List<String> warnings) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setProperties(Properties properties) {
|
||||
super.setProperties(properties);
|
||||
this.addGWTInterface = Boolean.valueOf(properties.getProperty("addGWTInterface")).booleanValue();
|
||||
this.suppressJavaInterface = Boolean.valueOf(properties.getProperty("suppressJavaInterface")).booleanValue();
|
||||
}
|
||||
|
||||
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
this.makeSerializable(topLevelClass, introspectedTable);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
this.makeSerializable(topLevelClass, introspectedTable);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean modelRecordWithBLOBsClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
this.makeSerializable(topLevelClass, introspectedTable);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void makeSerializable(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
||||
if(this.addGWTInterface) {
|
||||
topLevelClass.addImportedType(this.gwtSerializable);
|
||||
topLevelClass.addSuperInterface(this.gwtSerializable);
|
||||
}
|
||||
|
||||
if(!this.suppressJavaInterface) {
|
||||
topLevelClass.addImportedType(this.serializable);
|
||||
topLevelClass.addSuperInterface(this.serializable);
|
||||
Field field = new Field();
|
||||
field.setFinal(true);
|
||||
field.setInitializationString("1L");
|
||||
field.setName("serialVersionUID");
|
||||
field.setStatic(true);
|
||||
field.setType(new FullyQualifiedJavaType("long"));
|
||||
field.setVisibility(JavaVisibility.PRIVATE);
|
||||
this.context.getCommentGenerator().addFieldComment(field, introspectedTable);
|
||||
topLevelClass.addField(field);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加给Example类序列化的方法
|
||||
* @param topLevelClass
|
||||
* @param introspectedTable
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,IntrospectedTable introspectedTable){
|
||||
makeSerializable(topLevelClass, introspectedTable);
|
||||
|
||||
for (InnerClass innerClass : topLevelClass.getInnerClasses()) {
|
||||
if ("GeneratedCriteria".equals(innerClass.getType().getShortName())) {
|
||||
innerClass.addSuperInterface(serializable);
|
||||
}
|
||||
if ("Criteria".equals(innerClass.getType().getShortName())) {
|
||||
innerClass.addSuperInterface(serializable);
|
||||
}
|
||||
if ("Criterion".equals(innerClass.getType().getShortName())) {
|
||||
innerClass.addSuperInterface(serializable);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue