f3bf612ac908e3ccf2d1eb20a86eefd51ca85539.svn-base 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package cn.com.goldenwater.dcproj.utils;
  2. import org.mybatis.generator.api.IntrospectedColumn;
  3. import org.mybatis.generator.api.IntrospectedTable;
  4. import org.mybatis.generator.api.dom.java.CompilationUnit;
  5. import org.mybatis.generator.api.dom.java.Field;
  6. import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
  7. import org.mybatis.generator.internal.DefaultCommentGenerator;
  8. import org.mybatis.generator.internal.util.StringUtility;
  9. import java.util.Properties;
  10. /**
  11. * 自定义注释生成器
  12. */
  13. public class CommentGenerator extends DefaultCommentGenerator {
  14. private boolean addRemarkComments = false;
  15. private static final String EXAMPLE_SUFFIX="Example";
  16. private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
  17. /**
  18. * 设置用户配置的参数
  19. */
  20. @Override
  21. public void addConfigurationProperties(Properties properties) {
  22. super.addConfigurationProperties(properties);
  23. this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
  24. }
  25. /**
  26. * 给字段添加注释
  27. */
  28. @Override
  29. public void addFieldComment(Field field, IntrospectedTable introspectedTable,
  30. IntrospectedColumn introspectedColumn) {
  31. String remarks = introspectedColumn.getRemarks();
  32. //根据参数和备注信息判断是否添加备注信息
  33. if(addRemarkComments&& StringUtility.stringHasValue(remarks)){
  34. // addFieldJavaDoc(field, remarks);
  35. //数据库中特殊字符需要转义
  36. if(remarks.contains("\"")){
  37. remarks = remarks.replace("\"","'");
  38. }
  39. //给model的字段添加swagger注解
  40. field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
  41. }
  42. }
  43. /**
  44. * 给model的字段添加注释
  45. */
  46. private void addFieldJavaDoc(Field field, String remarks) {
  47. //文档注释开始
  48. field.addJavaDocLine("/**");
  49. //获取数据库字段的备注信息
  50. String[] remarkLines = remarks.split(System.getProperty("line.separator"));
  51. for(String remarkLine:remarkLines){
  52. field.addJavaDocLine(" * "+remarkLine);
  53. }
  54. addJavadocTag(field, false);
  55. field.addJavaDocLine(" */");
  56. }
  57. @Override
  58. public void addJavaFileComment(CompilationUnit compilationUnit) {
  59. super.addJavaFileComment(compilationUnit);
  60. //只在model中添加swagger注解类的导入
  61. if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
  62. compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
  63. }
  64. }
  65. }