org.mybatis.generator.plugins
Class EqualsHashCodePlugin

java.lang.Object
  extended by org.mybatis.generator.api.PluginAdapter
      extended by org.mybatis.generator.plugins.EqualsHashCodePlugin
All Implemented Interfaces:
Plugin

public class EqualsHashCodePlugin
extends PluginAdapter

This plugin adds equals() and hashCode() methods to the generated model classes. It demonstrates the process of adding methods to generated classes

The equals method generated by this class is correct in most cases, but will probably NOT be correct if you have specified a rootClass - because our equals method only checks the fields it knows about.

Similarly, the hashCode method generated by this class only relies on fields it knows about. Anything you add, or fields in a super class will not be factored into the hash code.

Author:
Jeff Butler

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.mybatis.generator.api.Plugin
Plugin.ModelClassType
 
Field Summary
 
Fields inherited from class org.mybatis.generator.api.PluginAdapter
context, properties
 
Constructor Summary
EqualsHashCodePlugin()
           
 
Method Summary
protected  void generateEquals(TopLevelClass topLevelClass, List<IntrospectedColumn> introspectedColumns, IntrospectedTable introspectedTable)
          Generates an equals method that does a comparison of all fields.
protected  void generateHashCode(TopLevelClass topLevelClass, List<IntrospectedColumn> introspectedColumns, IntrospectedTable introspectedTable)
          Generates a hashCode method that includes all fields.
 boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable)
          This method is called after the base record class is generated by the JavaModelGenerator.
 boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable)
          This method is called after the primary key class is generated by the JavaModelGenerator.
 boolean modelRecordWithBLOBsClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable)
          This method is called after the record with BLOBs class is generated by the JavaModelGenerator.
 boolean validate(List<String> warnings)
          This plugin is always valid - no properties are required
 
Methods inherited from class org.mybatis.generator.api.PluginAdapter
clientCountByExampleMethodGenerated, clientCountByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByExampleMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientDeleteByPrimaryKeyMethodGenerated, clientGenerated, clientInsertMethodGenerated, clientInsertMethodGenerated, clientInsertSelectiveMethodGenerated, clientInsertSelectiveMethodGenerated, clientSelectAllMethodGenerated, clientSelectAllMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByExampleWithoutBLOBsMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientSelectByPrimaryKeyMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleSelectiveMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByExampleWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeySelectiveMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalJavaFiles, contextGenerateAdditionalXmlFiles, contextGenerateAdditionalXmlFiles, getContext, getProperties, initialized, modelExampleClassGenerated, modelFieldGenerated, modelGetterMethodGenerated, modelSetterMethodGenerated, providerApplyWhereMethodGenerated, providerCountByExampleMethodGenerated, providerDeleteByExampleMethodGenerated, providerGenerated, providerInsertSelectiveMethodGenerated, providerSelectByExampleWithBLOBsMethodGenerated, providerSelectByExampleWithoutBLOBsMethodGenerated, providerUpdateByExampleSelectiveMethodGenerated, providerUpdateByExampleWithBLOBsMethodGenerated, providerUpdateByExampleWithoutBLOBsMethodGenerated, providerUpdateByPrimaryKeySelectiveMethodGenerated, setContext, setProperties, sqlMapBaseColumnListElementGenerated, sqlMapBlobColumnListElementGenerated, sqlMapCountByExampleElementGenerated, sqlMapDeleteByExampleElementGenerated, sqlMapDeleteByPrimaryKeyElementGenerated, sqlMapDocumentGenerated, sqlMapExampleWhereClauseElementGenerated, sqlMapGenerated, sqlMapInsertElementGenerated, sqlMapInsertSelectiveElementGenerated, sqlMapResultMapWithBLOBsElementGenerated, sqlMapResultMapWithoutBLOBsElementGenerated, sqlMapSelectAllElementGenerated, sqlMapSelectByExampleWithBLOBsElementGenerated, sqlMapSelectByExampleWithoutBLOBsElementGenerated, sqlMapSelectByPrimaryKeyElementGenerated, sqlMapUpdateByExampleSelectiveElementGenerated, sqlMapUpdateByExampleWithBLOBsElementGenerated, sqlMapUpdateByExampleWithoutBLOBsElementGenerated, sqlMapUpdateByPrimaryKeySelectiveElementGenerated, sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated, sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EqualsHashCodePlugin

public EqualsHashCodePlugin()
Method Detail

validate

public boolean validate(List<String> warnings)
This plugin is always valid - no properties are required

Parameters:
warnings - add strings to this list to specify warnings. For example, if the plugin is invalid, you should specify why. Warnings are reported to users after the completion of the run.
Returns:
true if the plugin is in a valid state. Invalid plugins will not be called

modelBaseRecordClassGenerated

public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass,
                                             IntrospectedTable introspectedTable)
Description copied from interface: Plugin
This method is called after the base record class is generated by the JavaModelGenerator. This method will only be called if the table rules call for generation of a base record class.

This method is only guaranteed to be called by the default Java model generators. Other user supplied generators may, or may not, call this method.

Specified by:
modelBaseRecordClassGenerated in interface Plugin
Overrides:
modelBaseRecordClassGenerated in class PluginAdapter
Parameters:
topLevelClass - the generated base record class
introspectedTable - The class containing information about the table as introspected from the database
Returns:
true if the class should be generated, false if the generated class should be ignored. In the case of multiple plugins, the first plugin returning false will disable the calling of further plugins.

modelPrimaryKeyClassGenerated

public boolean modelPrimaryKeyClassGenerated(TopLevelClass topLevelClass,
                                             IntrospectedTable introspectedTable)
Description copied from interface: Plugin
This method is called after the primary key class is generated by the JavaModelGenerator. This method will only be called if the table rules call for generation of a primary key class.

This method is only guaranteed to be called by the Java model generators. Other user supplied generators may, or may not, call this method.

Specified by:
modelPrimaryKeyClassGenerated in interface Plugin
Overrides:
modelPrimaryKeyClassGenerated in class PluginAdapter
Parameters:
topLevelClass - the generated primary key class
introspectedTable - The class containing information about the table as introspected from the database
Returns:
true if the class should be generated, false if the generated class should be ignored. In the case of multiple plugins, the first plugin returning false will disable the calling of further plugins.

modelRecordWithBLOBsClassGenerated

public boolean modelRecordWithBLOBsClassGenerated(TopLevelClass topLevelClass,
                                                  IntrospectedTable introspectedTable)
Description copied from interface: Plugin
This method is called after the record with BLOBs class is generated by the JavaModelGenerator. This method will only be called if the table rules call for generation of a record with BLOBs class.

This method is only guaranteed to be called by the default Java model generators. Other user supplied generators may, or may not, call this method.

Specified by:
modelRecordWithBLOBsClassGenerated in interface Plugin
Overrides:
modelRecordWithBLOBsClassGenerated in class PluginAdapter
Parameters:
topLevelClass - the generated record with BLOBs class
introspectedTable - The class containing information about the table as introspected from the database
Returns:
true if the class should be generated, false if the generated class should be ignored. In the case of multiple plugins, the first plugin returning false will disable the calling of further plugins.

generateEquals

protected void generateEquals(TopLevelClass topLevelClass,
                              List<IntrospectedColumn> introspectedColumns,
                              IntrospectedTable introspectedTable)
Generates an equals method that does a comparison of all fields.

The generated equals method will be correct unless:

Parameters:
topLevelClass - the class to which the method will be added
introspectedColumns - column definitions of this class and any superclass of this class
introspectedTable - the table corresponding to this class

generateHashCode

protected void generateHashCode(TopLevelClass topLevelClass,
                                List<IntrospectedColumn> introspectedColumns,
                                IntrospectedTable introspectedTable)
Generates a hashCode method that includes all fields.

Note that this implementation is based on the eclipse foundation hashCode generator.

Parameters:
topLevelClass - the class to which the method will be added
introspectedColumns - column definitions of this class and any superclass of this class
introspectedTable - the table corresponding to this class


Copyright © 2010-2012 MyBatis.org. All Rights Reserved.