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); } }
topLevelClass.addImportedType("javax.persistence.*"); topLevelClass.addImportedType("lombok.Data"); topLevelClass.addAnnotation("@Data"); topLevelClass.addImportedType("lombok.Getter"); topLevelClass.addAnnotation("@Getter"); topLevelClass.addImportedType("lombok.Setter"); topLevelClass.addAnnotation("@Setter"); topLevelClass.addImportedType("lombok.ToString"); topLevelClass.addAnnotation("@ToString"); topLevelClass.addImportedType("lombok.experimental.Accessors"); topLevelClass.addAnnotation("@Accessors(chain = true)"); topLevelClass.addImportedType("lombok.EqualsAndHashCode"); topLevelClass.addAnnotation("@EqualsAndHashCode"); topLevelClass.addImportedType("io.swagger.annotations.ApiModel"); topLevelClass.addImportedType("io.swagger.annotations.ApiModelProperty"); topLevelClass.addAnnotation("@ApiModel(\"" + remarks.replaceAll("\r", "").replaceAll("\n", "") + "\")"); if (caseSensitive && !topLevelClass.getType().getShortName().equals(tableName)) { topLevelClass.addAnnotation("@Table(name = \"" + getDelimiterName(tableName) + "\")"); } else if (!topLevelClass.getType().getShortName().equalsIgnoreCase(tableName)) { topLevelClass.addAnnotation("@Table(name = \"" + getDelimiterName(tableName) + "\")");
/** * 添加给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; }
limit.setVisibility(JavaVisibility.PRIVATE); limit.setType(integerWrapper); topLevelClass.addField(limit); setLimit.addParameter(new Parameter(integerWrapper, "limit")); setLimit.addBodyLine("this.limit = limit;"); topLevelClass.addMethod(setLimit); getLimit.setName("getLimit"); getLimit.addBodyLine("return limit;"); topLevelClass.addMethod(getLimit); offset.setVisibility(JavaVisibility.PRIVATE); offset.setType(integerWrapper); topLevelClass.addField(offset); setOffset.addParameter(new Parameter(integerWrapper, "offset")); setOffset.addBodyLine("this.offset = offset;"); topLevelClass.addMethod(setOffset); getOffset.setName("getOffset"); getOffset.addBodyLine("return offset;"); topLevelClass.addMethod(getOffset);
protected TopLevelClass getTopLevelClassShell() { FullyQualifiedJavaType interfaceType = new FullyQualifiedJavaType(introspectedTable.getDAOInterfaceType()); FullyQualifiedJavaType implementationType = new FullyQualifiedJavaType( introspectedTable.getDAOImplementationType()); CommentGenerator commentGenerator = context.getCommentGenerator(); TopLevelClass answer = new TopLevelClass(implementationType); answer.setVisibility(JavaVisibility.PUBLIC); answer.setSuperClass(daoTemplate.getSuperClass()); answer.addImportedType(daoTemplate.getSuperClass()); answer.addSuperInterface(interfaceType); answer.addImportedType(interfaceType); for (FullyQualifiedJavaType fqjt : daoTemplate.getImplementationImports()) { answer.addImportedType(fqjt); } commentGenerator.addJavaFileComment(answer); // add constructor from the template answer.addMethod(daoTemplate.getConstructorClone(commentGenerator, implementationType, introspectedTable)); // add any fields from the template for (Field field : daoTemplate.getFieldClones(commentGenerator, introspectedTable)) { answer.addField(field); } // add any methods from the template for (Method method : daoTemplate.getMethodClones(commentGenerator, introspectedTable)) { answer.addMethod(method); } return answer; }
TopLevelClass topLevelClass = new TopLevelClass(type); topLevelClass.setVisibility(JavaVisibility.PUBLIC); commentGenerator.addJavaFileComment(topLevelClass); topLevelClass.addMethod(method); field.setName("orderByClause"); //$NON-NLS-1$ commentGenerator.addFieldComment(field, introspectedTable); topLevelClass.addField(field); method.addBodyLine("this.orderByClause = orderByClause;"); //$NON-NLS-1$ commentGenerator.addGeneralMethodComment(method, introspectedTable); topLevelClass.addMethod(method); method.addBodyLine("return orderByClause;"); //$NON-NLS-1$ commentGenerator.addGeneralMethodComment(method, introspectedTable); topLevelClass.addMethod(method); field.setName("distinct"); //$NON-NLS-1$ commentGenerator.addFieldComment(field, introspectedTable); topLevelClass.addField(field); method.addBodyLine("this.distinct = distinct;"); //$NON-NLS-1$ commentGenerator.addGeneralMethodComment(method, introspectedTable); topLevelClass.addMethod(method); method.addBodyLine("return distinct;"); //$NON-NLS-1$ commentGenerator.addGeneralMethodComment(method, introspectedTable); topLevelClass.addMethod(method);
/** * {@inheritDoc} */ @Override public boolean clientSelectByExampleWithBLOBsMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { if (!config.shouldExclude(topLevelClass.getType())) topLevelClass.addMethod(generateSelectOneByExample(method, introspectedTable)); return true; }
topLevelClass.setVisibility(JavaVisibility.PUBLIC); topLevelClass.addSuperInterface(interfaceType); topLevelClass.addAnnotation("@Service(\"" + tableName.substring(0,1).toLowerCase() + tableName.substring(1) + "Service\")"); topLevelClass.addImportedType(service); topLevelClass.addMethod(countByExample(introspectedTable, tableName)); topLevelClass.addMethod(selectByPrimaryKey(introspectedTable, tableName)); topLevelClass.addMethod(selectByExample(introspectedTable, tableName)); topLevelClass.addMethod(getOtherInteger("deleteByPrimaryKey", introspectedTable, tableName, 2)); topLevelClass.addMethod(getOtherInteger("updateByPrimaryKeySelective", introspectedTable, tableName, 1)); topLevelClass.addMethod(getOtherInteger("updateByPrimaryKey", introspectedTable, tableName, 1)); topLevelClass.addMethod(getOtherInteger("deleteByExample", introspectedTable, tableName, 3)); topLevelClass.addMethod(getOtherInteger("updateByExampleSelective", introspectedTable, tableName, 4)); topLevelClass.addMethod(getOtherInteger("updateByExample", introspectedTable, tableName, 4)); topLevelClass.addMethod(getOtherInsertboolean("insert", introspectedTable, tableName)); topLevelClass.addMethod(getOtherInsertboolean("insertSelective", introspectedTable, tableName));
serviceName += "Service"; String fullName = servicePackage + ".service." + serviceName; TopLevelClass topLevelClazz = new TopLevelClass(fullName); topLevelClazz.setVisibility(JavaVisibility.PUBLIC); topLevelClazz.addImportedType(mapperName); topLevelClazz.addImportedType("org.springframework.stereotype.Service"); topLevelClazz.addFileCommentLine("/*"); topLevelClazz.addFileCommentLine(" this file generator by ServicePlugin"); topLevelClazz.addFileCommentLine(" @Author: xinlu"); topLevelClazz.addFileCommentLine(" @Email: 442559691@qq.com"); topLevelClazz.addFileCommentLine("*/"); topLevelClazz.addFileCommentLine(CommonConstants.BLANK); topLevelClazz.addAnnotation("@Service"); topLevelClazz.addAnnotation("@Transactional"); topLevelClazz.addImportedType("org.springframework.transaction.annotation.Transactional"); field.setName("mapper"); field.addAnnotation("@Autowired"); topLevelClazz.addImportedType("org.springframework.beans.factory.annotation.Autowired"); topLevelClazz.addField(field); FullyQualifiedJavaType pageHandler = new FullyQualifiedJavaType("com.publiccms.common.handler.PageHandler"); m.setReturnType(pageHandler); topLevelClazz.addImportedType(pageHandler); m.addBodyLine( "PageHandler page = new PageHandler(pageIndex, pageSize, mapper.countByExample(example), null);");
/** * Adds the lombok annotations' imports and annotations to the class * * @param topLevelClass the partially implemented model class */ private void addAnnotations(TopLevelClass topLevelClass) { for (Annotations annotation : annotations) { topLevelClass.addImportedType(annotation.javaType); topLevelClass.addAnnotation(annotation.asAnnotation()); } }
FullyQualifiedJavaType ptype = STRING_TYPE; for (InnerClass innerClass : topLevelClass.getInnerClasses()) { if (FullyQualifiedJavaType.getGeneratedCriteriaInstance().equals(innerClass.getType())) { for (Method method : innerClass.getMethods()) { expression[10] = "}"; expression[11] = "return this;"; Method method = makePartitionMethod(ptype, topLevelClass.getType(), fieldName, tableName, expression); topLevelClass.addImportedType(BIGDECIMAL_TYPE); topLevelClass.addMethod(method); System.out.println("-----------------" + topLevelClass.getType().getShortName() + " add method " + method.getName() + "."); expression[5] = "}"; expression[6] = "return this;"; Method method = makePartitionMethod(DATE_TYPE, topLevelClass.getType(), fieldName, tableName, expression); topLevelClass.addImportedType(CALENDAR_TYPE); topLevelClass.addMethod(method); System.out.println("-----------------" + topLevelClass.getType().getShortName() + " add method " + method.getName() + ".");
/** * 处理实体类的包和@Table注解 * * @param topLevelClass * @param introspectedTable */ private void processEntityClass(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { //引入JPA注解 topLevelClass.addImportedType("javax.persistence.*"); String tableName = introspectedTable.getFullyQualifiedTableNameAtRuntime(); //如果包含空格,或者需要分隔符,需要完善 if (StringUtility.stringContainsSpace(tableName)) { tableName = context.getBeginningDelimiter() + tableName + context.getEndingDelimiter(); } //是否忽略大小写,对于区分大小写的数据库,会有用 if (caseSensitive && !topLevelClass.getType().getShortName().equals(tableName)) { topLevelClass.addAnnotation("@Table(name = \"" + tableName + "\")"); } else if (!topLevelClass.getType().getShortName().equalsIgnoreCase(tableName)) { topLevelClass.addAnnotation("@Table(name = \"" + tableName + "\")"); } }
/** * 添加字段 * * @param topLevelClass */ protected void addField(TopLevelClass topLevelClass, String tableName) { // add dao Field field = new Field(); field.setName(toLowerCase(daoType.getShortName())); // set var name topLevelClass.addImportedType(daoType); field.setType(daoType); // type field.setVisibility(JavaVisibility.PRIVATE); if (enableAnnotation) { field.addAnnotation("@Autowired"); } topLevelClass.addField(field); }
public static void addProperty(String field, FullyQualifiedJavaType fieldType, TopLevelClass topLevelClass, Context context, String tableName) { for (Method method : topLevelClass.getMethods()) { if (method.getName().equals("clear")) { method.addBodyLine("this." + field + " = null;"); } } topLevelClass.addField(makeStringField(context, field, fieldType, tableName)); topLevelClass.addMethod(makeGetterStringMethod(context, field, fieldType, tableName)); topLevelClass.addMethod(makeSetterStringMethod(context, field, fieldType, tableName)); System.out.println("-----------------" + topLevelClass.getType().getShortName() + " add field " + field + " and getter related."); }
@Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { topLevelClass.addAnnotation("@Data"); topLevelClass.addImportedType(new FullyQualifiedJavaType("lombok.Data")); List<Method> methods = topLevelClass.getMethods(); List<Method> remove = new ArrayList<Method>(); for (Method method : methods) { if (method.getBodyLines().size() < 2) { remove.add(method); System.out.println("-----------------" + topLevelClass.getType().getShortName() + "'s method=" + method.getName() + " removed cause lombok annotation."); } } methods.removeAll(remove); return true; }
public TopLevelClass generate() { TopLevelClass topLevelClass = buildBasicClass(); Field tableField = calculateTableDefinition(topLevelClass); topLevelClass.addImportedType(tableField.getType()); topLevelClass.addField(tableField); InnerClass innerClass = buildInnerTableClass(topLevelClass); topLevelClass.addInnerClass(innerClass); List<IntrospectedColumn> columns = introspectedTable.getAllColumns(); for (IntrospectedColumn column : columns) { handleColumn(topLevelClass, innerClass, column, tableField.getName()); } return topLevelClass; }
String className = topLevelClass.getType().getShortName()+"对象"; String description = introspectedTable.getRemarks(); topLevelClass.addAnnotation("@Data"); topLevelClass.addAnnotation("@ApiModel(value=\""+className+"\", description=\""+description+"\")"); FullyQualifiedJavaType fullyQualifiedJavaType = new FullyQualifiedJavaType("lombok.Data"); FullyQualifiedJavaType fullyQualifiedJavaType2 = new FullyQualifiedJavaType("javax.persistence.*"); FullyQualifiedJavaType fullyQualifiedJavaType3 = new FullyQualifiedJavaType("io.swagger.annotations.ApiModel"); FullyQualifiedJavaType fullyQualifiedJavaType4 = new FullyQualifiedJavaType("io.swagger.annotations.ApiModelProperty"); topLevelClass.addImportedType(fullyQualifiedJavaType); topLevelClass.addImportedType(fullyQualifiedJavaType2); topLevelClass.addImportedType(fullyQualifiedJavaType3); topLevelClass.addImportedType(fullyQualifiedJavaType4); topLevelClass.addJavaDocLine("/**"); topLevelClass.addJavaDocLine(" *"); topLevelClass.addJavaDocLine(" * @author "+author); topLevelClass.addJavaDocLine(" * @description "); topLevelClass.addJavaDocLine(" * @Copyright (c) "+ sdf1.format(new Date())+", Lianjia Group All Rights Reserved."); topLevelClass.addJavaDocLine(" * @date "+sdf2.format(new Date())+""); topLevelClass.addJavaDocLine(" * @version 1.0"); topLevelClass.addJavaDocLine(" */");
@Override public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { String classAnnotation = "@ApiModel(value=\"" + topLevelClass.getType() + "\")"; if(!topLevelClass.getAnnotations().contains(classAnnotation)) { topLevelClass.addAnnotation(classAnnotation); } String apiModelAnnotationPackage = properties.getProperty("apiModelAnnotationPackage"); String apiModelPropertyAnnotationPackage = properties.getProperty("apiModelPropertyAnnotationPackage"); if(null == apiModelAnnotationPackage) apiModelAnnotationPackage = "io.swagger.annotations.ApiModel"; if(null == apiModelPropertyAnnotationPackage) apiModelPropertyAnnotationPackage = "io.swagger.annotations.ApiModelProperty"; topLevelClass.addImportedType(apiModelAnnotationPackage); topLevelClass.addImportedType(apiModelPropertyAnnotationPackage); field.addAnnotation("@ApiModelProperty(value=\"" + introspectedColumn.getJavaProperty() + introspectedColumn.getRemarks() + "\")"); return super.modelFieldGenerated(field, topLevelClass, introspectedColumn, introspectedTable, modelClassType); } }
@Override public void addImplementationElements(TopLevelClass topLevelClass) { topLevelClass.addImportedType(new FullyQualifiedJavaType(introspectedTable.getExampleType())); InnerClass innerClass = new InnerClass(new FullyQualifiedJavaType("UpdateByExampleParms")); //$NON-NLS-1$ innerClass.setVisibility(JavaVisibility.PROTECTED); innerClass.setStatic(true); innerClass.setSuperClass(introspectedTable.getExampleType()); context.getCommentGenerator().addClassComment(innerClass, introspectedTable); Method method = new Method(); method.setConstructor(true); method.setVisibility(JavaVisibility.PUBLIC); method.setName(innerClass.getType().getShortName()); method.addParameter(new Parameter(FullyQualifiedJavaType.getObjectInstance(), "record")); //$NON-NLS-1$ method.addParameter(new Parameter(new FullyQualifiedJavaType(introspectedTable.getExampleType()), "example")); //$NON-NLS-1$ method.addBodyLine("super(example);"); //$NON-NLS-1$ method.addBodyLine("this.record = record;"); //$NON-NLS-1$ innerClass.addMethod(method); Field field = new Field(); field.setVisibility(JavaVisibility.PRIVATE); field.setType(FullyQualifiedJavaType.getObjectInstance()); field.setName("record"); //$NON-NLS-1$ innerClass.addField(field); method = new Method(); method.setVisibility(JavaVisibility.PUBLIC); method.setReturnType(FullyQualifiedJavaType.getObjectInstance()); method.setName("getRecord"); //$NON-NLS-1$ method.addBodyLine("return record;"); //$NON-NLS-1$ innerClass.addMethod(method); topLevelClass.addInnerClass(innerClass); }
protected void makeSerializable(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { if (addGWTInterface) { topLevelClass.addImportedType(gwtSerializable); topLevelClass.addSuperInterface(gwtSerializable); } if (!suppressJavaInterface) { topLevelClass.addImportedType(serializable); topLevelClass.addSuperInterface(serializable); Field field = new Field(); field.setFinal(true); field.setInitializationString("1L"); //$NON-NLS-1$ field.setName("serialVersionUID"); //$NON-NLS-1$ field.setStatic(true); field.setType(new FullyQualifiedJavaType("long")); //$NON-NLS-1$ field.setVisibility(JavaVisibility.PRIVATE); if (introspectedTable.getTargetRuntime() == TargetRuntime.MYBATIS3_DSQL) { context.getCommentGenerator().addFieldAnnotation(field, introspectedTable, topLevelClass.getImportedTypes()); } else { context.getCommentGenerator().addFieldComment(field, introspectedTable); } topLevelClass.addField(field); } } }