Intellij IDEA 2016学习系列之(三)修改mybatis-generator源码生成中文注释
2016-09-04 01:32
771 查看
如果你进入本文,说明你也是想在mybatis generator 自动生成mapper xml model的时候,自动生成数据库字段的备注为注释信息。那么只要你阅读完本文,就可以帮助你实现你想要的。文章末尾会有源码的地址和jar.
下载mybatis-generator-core源码
源码的修改
修改生成model对象类的注释
在FullyQualifiedTable中添加remark字段用于保存数据库表的备注信息
修改DatabaseIntrospector的calculateIntrospectedTables方法添加一段获取数据库备注的代码
修改DG2CommentGenerator中的 addClassCommentInnerClass innerClass IntrospectedTable introspectedTable 方法
修改model对象中字段的注释
在IntrospectedColumn中添加remarks属性用于保存数据库对应表中字段的备注信息需要settergetter
修改DG2CommentGenerator中的 addFieldCommentField field IntrospectedTable introspectedTable IntrospectedColumn introspectedColumn 方法
修改model对象中settergetter的注释
getter方法
setter方法
修改生成mapper中的注释
修改mapper接口中的注释
删除mapperxml中的注释
maven工程的打包
如何在工程中引用
需要修改generatorConfigxml
需要修改pomxml
源码和jar下载
maven mybatis-generator-core 源码
导入成功之后的格式:
如果是直接下载的官方的源码,要修改pom.xml中的好多东西,各位有兴趣自己玩。我这里是解决好了之后的。
pom.xml
我这里不修改默认的类DefaultCommentGenerator,而是新建一个自己的类 DG2CommentGenerator。按照自己的需求重写一些方法,主要有生成mapper接口的备注信息,生成model对象的注释。
具体样式可以按自己的爱好设置。
生成之后我的maven仓库中的jar如下:
替换为
修改为
至此,大功告成。请看生成之后的代码样式。
1.3.2-fix源码:https://github.com/liudongdong0909/mybatis-generator-core-fix.git
下载mybatis-generator-core源码
源码的修改
修改生成model对象类的注释
在FullyQualifiedTable中添加remark字段用于保存数据库表的备注信息
修改DatabaseIntrospector的calculateIntrospectedTables方法添加一段获取数据库备注的代码
修改DG2CommentGenerator中的 addClassCommentInnerClass innerClass IntrospectedTable introspectedTable 方法
修改model对象中字段的注释
在IntrospectedColumn中添加remarks属性用于保存数据库对应表中字段的备注信息需要settergetter
修改DG2CommentGenerator中的 addFieldCommentField field IntrospectedTable introspectedTable IntrospectedColumn introspectedColumn 方法
修改model对象中settergetter的注释
getter方法
setter方法
修改生成mapper中的注释
修改mapper接口中的注释
删除mapperxml中的注释
maven工程的打包
如何在工程中引用
需要修改generatorConfigxml
需要修改pomxml
源码和jar下载
下载mybatis-generator-core源码
其中下载过程各位可以自行Google,我这里有已经测试通过的maven工程,各位可以直接下载下来,导入自己的IDE中就可以了。maven mybatis-generator-core 源码
导入成功之后的格式:
如果是直接下载的官方的源码,要修改pom.xml中的好多东西,各位有兴趣自己玩。我这里是解决好了之后的。
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator</artifactId> <version>1.3.2</version> </parent> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <!--1.3.2-fix 是我自己命名的,也是最后jar的名称--> <version>1.3.2-fix</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <!-- this build creates and installs an instrumented JAR file for use by the systests projects - so we can gather consolidated coverage information --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!--<plugin>--> <!--<groupId>org.apache.maven.plugins</groupId>--> <!--<artifactId>maven-site-plugin</artifactId>--> <!--<executions>--> <!--<execution>--> <!--<phase>prepare-package</phase>--> <!--<goals>--> <!--<goal>site</goal>--> <!--</goals>--> <!--</execution>--> <!--</executions>--> <!--</plugin>--> <!--<plugin>--> <!--<groupId>org.apache.maven.plugins</groupId>--> <!--<artifactId>maven-source-plugin</artifactId>--> <!--<executions>--> <!--<execution>--> <!--<phase>prepare-package</phase>--> <!--<goals>--> <!--<goal>jar-no-fork</goal>--> <!--</goals>--> <!--</execution>--> <!--</executions>--> <!--</plugin>--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <phase>prepare-package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!--<plugin>--> <!--<groupId>org.apache.maven.plugins</groupId>--> <!--<artifactId>maven-jar-plugin</artifactId>--> <!--<configuration>--> <!--<archive>--> <!--<manifest>--> <!--<mainClass>org.mybatis.generator.api.ShellRunner</mainClass>--> <!--</manifest>--> <!--</archive>--> <!--</configuration>--> <!--</plugin>--> <!--<plugin>--> <!--<groupId>org.apache.maven.plugins</groupId>--> <!--<artifactId>maven-assembly-plugin</artifactId>--> <!--<configuration>--> <!--<descriptors>--> <!--<descriptor>${project.basedir}/src/main/assembly/src.xml</descriptor>--> <!--</descriptors>--> <!--</configuration>--> <!--<executions>--> <!--<execution>--> <!--<id>bundle</id>--> <!--<goals>--> <!--<goal>single</goal>--> <!--</goals>--> <!--<phase>package</phase>--> <!--</execution>--> <!--</executions>--> <!--</plugin>--> <!--<plugin>--> <!--<groupId>org.apache.maven.plugins</groupId>--> <!--<artifactId>maven-release-plugin</artifactId>--> <!--<configuration>--> <!--<arguments>-Prelease</arguments>--> <!--</configuration>--> <!--</plugin>--> </plugins> </build> <reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jdepend-maven-plugin</artifactId> <version>2.0</version> </plugin> </plugins> </reporting> <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <scope>provided</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <scope>provided</scope> <optional>true</optional> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
源码的修改
我这里不修改默认的类DefaultCommentGenerator,而是新建一个自己的类 DG2CommentGenerator。按照自己的需求重写一些方法,主要有生成mapper接口的备注信息,生成model对象的注释。
package org.mybatis.generator.internal; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.api.dom.java.InnerClass; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.Parameter; import org.mybatis.generator.api.dom.xml.TextElement; import org.mybatis.generator.api.dom.xml.XmlElement; import org.mybatis.generator.config.MergeConstants; import java.util.List; /** * 自定义注解生成 * * @author IT_donggua * @version V1.0 * @create 2016-09-02 下午 06:28 */ public class DG2CommentGenerator extends DefaultCommentGenerator{ public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ // sb.append(" * This method corresponds to the database table "); //$NON-NLS-1$ sb.append(" * "); if (method.isConstructor()) { sb.append(" 构造查询条件"); } String method_name = method.getName(); if ("setOrderByClause".equals(method_name)) { sb.append(" 设置排序字段"); } else if ("setDistinct".equals(method_name)) { sb.append(" 设置过滤重复数据"); } else if ("getOredCriteria".equals(method_name)) { sb.append(" 获取当前的查询条件实例"); } else if ("isDistinct".equals(method_name)) { sb.append(" 是否过滤重复数据"); } else if ("getOrderByClause".equals(method_name)) { sb.append(" 获取排序字段"); } else if ("createCriteria".equals(method_name)) { sb.append(" 创建一个查询条件"); } else if ("createCriteriaInternal".equals(method_name)) { sb.append(" 内部构建查询条件对象"); } else if ("clear".equals(method_name)) { sb.append(" 清除查询条件"); } else if ("countByExample".equals(method_name)) { sb.append(" 根据指定的条件获取数据库记录数"); } else if ("deleteByExample".equals(method_name)) { sb.append(" 根据指定的条件删除数据库符合条件的记录"); } else if ("deleteByPrimaryKey".equals(method_name)) { sb.append(" 根据主键删除数据库的记录"); } else if ("insert".equals(method_name)) { sb.append(" 新写入数据库记录"); } else if ("insertSelective".equals(method_name)) { sb.append(" 动态字段,写入数据库记录"); } else if ("selectByExample".equals(method_name)) { sb.append(" 根据指定的条件查询符合条件的数据库记录"); } else if ("selectByPrimaryKey".equals(method_name)) { sb.append(" 根据指定主键获取一条数据库记录"); } else if ("updateByExampleSelective".equals(method_name)) { sb.append(" 动态根据指定的条件来更新符合条件的数据库记录"); } else if ("updateByExample".equals(method_name)) { sb.append(" 根据指定的条件来更新符合条件的数据库记录"); } else if ("updateByPrimaryKeySelective".equals(method_name)) { sb.append(" 动态字段,根据主键来更新符合条件的数据库记录"); } else if ("updateByPrimaryKey".equals(method_name)) { sb.append(" 根据主键来更新符合条件的数据库记录"); } sb.append(","); sb.append(introspectedTable.getFullyQualifiedTable()); method.addJavaDocLine(sb.toString()); final List<Parameter> parameterList = method.getParameters(); if (!parameterList.isEmpty()) { method.addJavaDocLine(" *"); if ("or".equals(method_name)) { sb.append(" 增加或者的查询条件,用于构建或者查询"); } } else { if ("or".equals(method_name)) { sb.append(" 创建一个新的或者查询条件"); } } String paramterName; for (Parameter parameter : parameterList) { sb.setLength(0); sb.append(" * @param "); //$NON-NLS-1$ paramterName = parameter.getName(); sb.append(paramterName); if ("orderByClause".equals(paramterName)) { sb.append(" 排序字段"); //$NON-NLS-1$ } else if ("distinct".equals(paramterName)) { sb.append(" 是否过滤重复数据"); } else if ("criteria".equals(paramterName)) { sb.append(" 过滤条件实例"); } method.addJavaDocLine(sb.toString()); } // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } @Override public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) { // 类注释,不管用 String shortName = innerClass.getType().getShortName(); innerClass.addJavaDocLine("/**"); //innerClass.addJavaDocLine(" * 类注释"); innerClass.addJavaDocLine(" * " + introspectedTable.getFullyQualifiedTable().getRemark()); innerClass.addJavaDocLine(" * " + shortName); innerClass.addJavaDocLine(" * 数据库表:" + introspectedTable.getFullyQualifiedTable()); // addJavadocTag(innerClass, false); innerClass.addJavaDocLine(" */"); } @Override public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) { // 类注释,不管用 String shortName = innerClass.getType().getShortName(); innerClass.addJavaDocLine("/**"); innerClass.addJavaDocLine(" * 类注释"); innerClass.addJavaDocLine(" * " + shortName); innerClass.addJavaDocLine(" * 数据库表:" + introspectedTable.getFullyQualifiedTable()); // addJavadocTag(innerClass, false); innerClass.addJavaDocLine(" */"); } @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { // 添加字段注释 StringBuffer sb = new StringBuffer(); field.addJavaDocLine("/**"); if (introspectedColumn.getRemarks() != null) field.addJavaDocLine(" * " + introspectedColumn.getRemarks()); sb.append(" * 表字段 : "); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); field.addJavaDocLine(sb.toString()); // addJavadocTag(field, false); field.addJavaDocLine(" */"); } @Override public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * 获取 "); //$NON-NLS-1$ sb.append(introspectedColumn.getRemarks()).append(" 字段:"); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); method.addJavaDocLine(sb.toString()); method.addJavaDocLine(" *"); //$NON-NLS-1$ sb.setLength(0); sb.append(" * @return "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); sb.append(", "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString()); // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } @Override public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * 设置 "); //$NON-NLS-1$ sb.append(introspectedColumn.getRemarks()).append(" 字段:"); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); method.addJavaDocLine(sb.toString()); method.addJavaDocLine(" *"); //$NON-NLS-1$ Parameter parm = method.getParameters().get(0); sb.setLength(0); sb.append(" * @param "); //$NON-NLS-1$ sb.append(parm.getName()); sb.append(" the value for "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); sb.append(", "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString()); // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ } @Override public void addComment(XmlElement xmlElement) { xmlElement.addElement(new TextElement("<!--")); //$NON-NLS-1$ StringBuilder sb = new StringBuilder(); sb.append(MergeConstants.NEW_ELEMENT_TAG); xmlElement.addElement(new TextElement(sb.toString())); // xmlElement // .addElement(new TextElement( // " This element is automatically generated by MyBatis Generator, do not modify.")); //$NON-NLS-1$ // String s = getDateString(); // if (s != null) { // sb.setLength(0); // sb.append(" This element was generated on "); //$NON-NLS-1$ // sb.append(s); // sb.append('.'); // xmlElement.addElement(new TextElement(sb.toString())); // } xmlElement.addElement(new TextElement("-->")); //$NON-NLS-1$ } }
修改生成model对象类的注释
在FullyQualifiedTable中添加remark字段,用于保存数据库表的备注信息
修改DatabaseIntrospector的calculateIntrospectedTables方法,添加一段获取数据库备注的代码
//设置数据库表的备注信息 //start Statement stmt = this.databaseMetaData.getConnection().createStatement(); ResultSet rs = stmt.executeQuery(new StringBuilder().append("SHOW TABLE STATUS LIKE '").append(atn.getTableName()).append("'").toString()); while (rs.next()) //将数据库表得备注信息设置到remark字段 table.setRemark(rs.getString("COMMENT")); closeResultSet(rs); stmt.close(); //end
修改DG2CommentGenerator中的 addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) 方法
具体样式可以按自己的爱好设置。
//生成model对象的注释信息 @Override public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) { // 类注释,不管用 String shortName = innerClass.getType().getShortName(); innerClass.addJavaDocLine("/**"); //innerClass.addJavaDocLine(" * 类注释"); //获取数据库表的备注信息 innerClass.addJavaDocLine(" * " + introspectedTable.getFullyQualifiedTable().getRemark()); //model对象的名称 innerClass.addJavaDocLine(" * " + shortName); //获取数据库表 innerClass.addJavaDocLine(" * 数据库表:" + introspectedTable.getFullyQualifiedTable()); // addJavadocTag(innerClass, false); innerClass.addJavaDocLine(" */"); }
修改model对象中字段的注释
在IntrospectedColumn中添加remarks属性,用于保存数据库对应表中字段的备注信息,需要setter/getter
修改DG2CommentGenerator中的 addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) 方法
//model对象中字段的注释 @Override public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { // 添加字段注释 StringBuffer sb = new StringBuffer(); field.addJavaDocLine("/**"); //对应表中字段的备注(数据库中自己写的备注信息) if (introspectedColumn.getRemarks() != null) field.addJavaDocLine(" * " + introspectedColumn.getRemarks()); sb.append(" * 表字段 : "); //对应表名称 sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); //对应表中字段的名称 sb.append(introspectedColumn.getActualColumnName()); field.addJavaDocLine(sb.toString()); // addJavadocTag(field, false); field.addJavaDocLine(" */"); }
修改model对象中setter/getter的注释
这个就直接上代码,没有源码修改。getter方法
@Override public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * 获取 "); //$NON-NLS-1$ sb.append(introspectedColumn.getRemarks()).append(" 字段:"); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); method.addJavaDocLine(sb.toString()); method.addJavaDocLine(" *"); //$NON-NLS-1$ sb.setLength(0); sb.append(" * @return "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); sb.append(", "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString()); // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ }
setter方法
@Override public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ sb.append(" * 设置 "); //$NON-NLS-1$ sb.append(introspectedColumn.getRemarks()).append(" 字段:"); sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); method.addJavaDocLine(sb.toString()); method.addJavaDocLine(" *"); //$NON-NLS-1$ Parameter parm = method.getParameters().get(0); sb.setLength(0); sb.append(" * @param "); //$NON-NLS-1$ sb.append(parm.getName()); sb.append(" the value for "); //$NON-NLS-1$ sb.append(introspectedTable.getFullyQualifiedTable()); sb.append('.'); sb.append(introspectedColumn.getActualColumnName()); sb.append(", "); sb.append(introspectedColumn.getRemarks()); method.addJavaDocLine(sb.toString()); // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ }
修改生成mapper中的注释
修改mapper接口中的注释
public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) { StringBuilder sb = new StringBuilder(); method.addJavaDocLine("/**"); //$NON-NLS-1$ // method.addJavaDocLine(" * This method was generated by MyBatis Generator."); //$NON-NLS-1$ // sb.append(" * This method corresponds to the database table "); //$NON-NLS-1$ sb.append(" * "); if (method.isConstructor()) { sb.append(" 构造查询条件"); } String method_name = method.getName(); if ("setOrderByClause".equals(method_name)) { sb.append(" 设置排序字段"); } else if ("setDistinct".equals(method_name)) { sb.append(" 设置过滤重复数据"); } else if ("getOredCriteria".equals(method_name)) { sb.append(" 获取当前的查询条件实例"); } else if ("isDistinct".equals(method_name)) { sb.append(" 是否过滤重复数据"); } else if ("getOrderByClause".equals(method_name)) { sb.append(" 获取排序字段"); } else if ("createCriteria".equals(method_name)) { sb.append(" 创建一个查询条件"); } else if ("createCriteriaInternal".equals(method_name)) { sb.append(" 内部构建查询条件对象"); } else if ("clear".equals(method_name)) { sb.append(" 清除查询条件"); } else if ("countByExample".equals(method_name)) { sb.append(" 根据指定的条件获取数据库记录数"); } else if ("deleteByExample".equals(method_name)) { sb.append(" 根据指定的条件删除数据库符合条件的记录"); } else if ("deleteByPrimaryKey".equals(method_name)) { sb.append(" 根据主键删除数据库的记录"); } else if ("insert".equals(method_name)) { sb.append(" 新写入数据库记录"); } else if ("insertSelective".equals(method_name)) { sb.append(" 动态字段,写入数据库记录"); } else if ("selectByExample".equals(method_name)) { sb.append(" 根据指定的条件查询符合条件的数据库记录"); } else if ("selectByPrimaryKey".equals(method_name)) { sb.append(" 根据指定主键获取一条数据库记录"); } else if ("updateByExampleSelective".equals(method_name)) { sb.append(" 动态根据指定的条件来更新符合条件的数据库记录"); } else if ("updateByExample".equals(method_name)) { sb.append(" 根据指定的条件来更新符合条件的数据库记录"); } else if ("updateByPrimaryKeySelective".equals(method_name)) { sb.append(" 动态字段,根据主键来更新符合条件的数据库记录"); } else if ("updateByPrimaryKey".equals(method_name)) { sb.append(" 根据主键来更新符合条件的数据库记录"); } sb.append(","); sb.append(introspectedTable.getFullyQualifiedTable()); method.addJavaDocLine(sb.toString()); final List<Parameter> parameterList = method.getParameters(); if (!parameterList.isEmpty()) { method.addJavaDocLine(" *"); if ("or".equals(method_name)) { sb.append(" 增加或者的查询条件,用于构建或者查询"); } } else { if ("or".equals(method_name)) { sb.append(" 创建一个新的或者查询条件"); } } String paramterName; for (Parameter parameter : parameterList) { sb.setLength(0); sb.append(" * @param "); //$NON-NLS-1$ paramterName = parameter.getName(); sb.append(paramterName); if ("orderByClause".equals(paramterName)) { sb.append(" 排序字段"); //$NON-NLS-1$ } else if ("distinct".equals(paramterName)) { sb.append(" 是否过滤重复数据"); } else if ("criteria".equals(paramterName)) { sb.append(" 过滤条件实例"); } method.addJavaDocLine(sb.toString()); } // addJavadocTag(method, false); method.addJavaDocLine(" */"); //$NON-NLS-1$ }
删除mapper.xml中的注释
@Override public void addComment(XmlElement xmlElement) { xmlElement.addElement(new TextElement("<!--")); //$NON-NLS-1$ StringBuilder sb = new StringBuilder(); sb.append(MergeConstants.NEW_ELEMENT_TAG); xmlElement.addElement(new TextElement(sb.toString())); // xmlElement // .addElement(new TextElement( // " This element is automatically generated by MyBatis Generator, do not modify.")); //$NON-NLS-1$ // String s = getDateString(); // if (s != null) { // sb.setLength(0); // sb.append(" This element was generated on "); //$NON-NLS-1$ // sb.append(s); // sb.append('.'); // xmlElement.addElement(new TextElement(sb.toString())); // } xmlElement.addElement(new TextElement("-->")); //$NON-NLS-1$ }
maven工程的打包
clean install -Dmaven.test.skip=true
生成之后我的maven仓库中的jar如下:
如何在工程中引用
参照Intellij IDEA 2016学习系列之(二)mybatis-generator生成需要修改generatorConfig.xml
将<context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator>
替换为
<!--使用自定义的类DG2CommentGenerator--> <commentGenerator type="org.mybatis.generator.internal.DG2CommentGenerator"> <property name="javaFileEncoding" value="UTF-8"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="false" /> <property name="suppressDate" value="true" /> </commentGenerator>
需要修改pom.xml
将插件中的依赖<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> </dependencies>
修改为
<dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <!--使用自己的版本--> <version>1.3.2-fix</version> </dependency> </dependencies>
至此,大功告成。请看生成之后的代码样式。
源码和jar下载
1.3.2-fix.jar:http://download.csdn.net/detail/liudongdong0909/96211441.3.2-fix源码:https://github.com/liudongdong0909/mybatis-generator-core-fix.git
相关文章推荐
- Intellij IDEA 2016学习系列之(二)mybatis-generator自动生成
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)
- [置顶] 修改mybatis-generator-1.3.2源码实现中文注释
- Intellij IDEA 2016学习系列之(二)mybatis-generator自动生成
- mybatis generator 生成 实体类 中文注释
- mybatis generator 生成中文注释
- 修改mybatis-generator-1.3.2源码实现自定义代码生成详解
- mybatis-generator-1.3.2生成数据库的中文注释
- MyBatis-generator-core 生成的Dao 怎么自定义名字 (或者手动修改哪些源码可以实现)
- MyBatis-generator-core 生成的Dao 怎么自定义名字 (或者手动修改哪些源码可以实现)
- 修改mybatis-generator-core1.3.2源码实现注释等功能
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
- mybatis-generator-core自动生成代码,支持生成中文注释、支持分页、提供BaseDao封装
- mybatis-generator 自动生成带中文注释方法(附实体类)
- mybatis generator 生成数据库注释DAO源码
- MyBatis代码实例系列-08:MyBatisGenerator插件及扩展(中文注释和Mapper重命名为Dao)
- 通过继承DefaultCommentGenerator的方式来设置mybatis自定义代码生成器中生成实体类的中文注释
- MyBatis Generator系列(三)----修改源码实现中文注释
- myBatis-generator 生成中文注释的问题