1,新增:
package com.cn.pb.process.app; import com.cn.pb.util.PrintPbUtil; /** * Created by lizhihao on 2019/4/6 17:26 * 輸出新增接口的pb * 接口名、指定表名 */ public class PrintPbCreateApp extends PrintPbParentApp { //打印pb新增接口 static{ INTERFACE_PREFIX = "create"; INTERFACE_REQ_RES_PREFIX = "Create"; } //打印配置信息中的表新增接口pb生成 組裝打印信息 public static void printPropertiesCreateInterfacePb(){ for (String name : PrintPbUtil.getPropertiesTableNames()) { printInterfacePb(name); MSGID++; } } //打印新增入參及出參對象 public static void printCreateReqAndResPb(){ for (String name : PrintPbUtil.getPropertiesTableNames()) { printReqAndResPb(name);//如果只打印對象,可註釋掉這段 printOneTableToPbInfo(name); MSGID++; } } public static void main(String[] args) { printPropertiesCreateInterfacePb(); printCreateReqAndResPb(); } }
2,修改:
package com.cn.pb.process.app; import com.cn.pb.util.PrintPbUtil; /** * Created by lizhihao on 2019/4/6 18:23 * 指定properties文件配置:更新接口pb生成 */ public class PrintPbUpdateApp extends PrintPbParentApp { static{ INTERFACE_PREFIX = "update"; INTERFACE_REQ_RES_PREFIX = "Update"; } //打印配置信息中的表更新接口pb生成 public static void printPropertiesUpdateInterfacePb(){ for (String name : PrintPbUtil.getPropertiesTableNames()) { printInterfacePb(name); MSGID++; } } //打印更新入參及出參 public static void printUpdateReqAndResPb(){ for (String name : PrintPbUtil.getPropertiesTableNames()) { printReqAndResNoPrimaryKeyPb(name); // printOneTableToPbInfo(name); MSGID++; } } public static void main(String[] args) { printPropertiesUpdateInterfacePb(); printUpdateReqAndResPb(); } }
3,刪除:
package com.cn.pb.process.app; /** * Created by lizhihao on 2019/4/7 15:27 * 打印刪除接口pb */ public class PrintPbDeleteApp extends PrintPbParentApp { static{ INTERFACE_PREFIX = "delete"; INTERFACE_REQ_RES_PREFIX = "Delete"; } //打印配置信息中的表刪除接口pb生成 組裝打印信息 public static void printPropertiesDeleteInterfacePb(){ printPropertiesInterfacePb(); } //打印刪除入參及出參對象 public static void printDeleteReqAndResPb(){ printReqAndResPb(false); } public static void main(String[] args) { printPropertiesDeleteInterfacePb(); printDeleteReqAndResPb(); } }
4,列表查詢:
package com.cn.pb.process.app; import com.cn.pb.util.PrintPbUtil; /** * Created by lizhihao on 2019/4/6 21:07 * 列表查詢接口 指定表及指定要查詢的字段生成PB */ public class PrintPbListApp extends PrintPbParentApp { static{ INTERFACE_PREFIX = "list"; INTERFACE_REQ_RES_PREFIX = "List"; } //打印配置信息中的表列表接口pb生成 組裝打印信息 public static void printPropertiesListInterfacePb(){ for (String name : PrintPbUtil.getPropertiesTableNames()) { printInterfacePb(name); MSGID++; } } //打印列表查詢接口入參及出參 public static void printListReqAndResPb(){ MSGID=1; for (String name : PrintPbUtil.getPropertiesTableNames()) { if(MSGID == 1) printReqAndResPbReq(name);//這裏入參只能輸入一次,內部已經做了循環讀取 printReturnListRes(name); MSGID++; } } public static void main(String[] args) { printPropertiesListInterfacePb(); printListReqAndResPb(); } }
5,詳情查詢:
package com.cn.pb.process.app; /** * Created by lizhihao on 2019/4/7 21:14 * 打印詳情接口pb */ public class PrintPbDetailApp extends PrintPbParentApp { static{ INTERFACE_PREFIX = "getDetail"; INTERFACE_REQ_RES_PREFIX = "GetDetail"; } //打印配置信息中的表刪除接口pb生成 組裝打印信息 public static void printPropertiesDeleteInterfacePb(){ printPropertiesInterfacePb(); } //打印詳情入參及出參對象 public static void printDeleteReqAndResPb(){ printReqAndResPb(true); } public static void main(String[] args) { printPropertiesDeleteInterfacePb(); printDeleteReqAndResPb(); } }
6,共有父類:
package com.cn.pb.process.app; import com.cn.pb.util.CommonUtil; import com.cn.pb.util.PrintPbUtil; import com.cn.pb.util.PropertiesUtil; import com.cn.pb.util.RoleUtil; import com.mysql.cj.util.StringUtils; /** * Created by lizhihao on 2019/4/7 15:36 */ public abstract class PrintPbParentApp { //msgId public static int MSGID = 1; //接口方法前綴 public static String INTERFACE_PREFIX; //接口入參及出參前綴 public static String INTERFACE_REQ_RES_PREFIX; //入參指定傳入User public static String USER = "User"; //打印pb接口 public static void printInterfacePb(String tableName){ if(StringUtils.isNullOrEmpty(tableName)) return; PrintPbUtil.printInterfacePb((INTERFACE_PREFIX == null ? "" : INTERFACE_PREFIX)+ RoleUtil.convertTableName(tableName) ,(INTERFACE_REQ_RES_PREFIX == null ? ""+ RoleUtil.convertTableNameUpperReq(tableName) : INTERFACE_REQ_RES_PREFIX+RoleUtil.convertTableNameReq(tableName)) ,(INTERFACE_REQ_RES_PREFIX == null ? "" + RoleUtil.convertTableNameUpperRes(tableName) : INTERFACE_REQ_RES_PREFIX + RoleUtil.convertTableNameRes(tableName)),MSGID); } //打印接口入參及出參pb生成 入參固定爲:該表中的所有字段 出參:有主鍵id 適用於新增、修改類接口 public static void printReqAndResPb(String tableName){ PrintPbUtil.printOneTableToPbReqAndRes(tableName,INTERFACE_REQ_RES_PREFIX,true); } //打印接口入參及出參pb生成 入參固定爲:該表中的所有字段 出參:無主鍵id 適用於新增、修改類接口 public static void printReqAndResNoPrimaryKeyPb(String tableName){ PrintPbUtil.printOneTableToPbReqAndRes(tableName,INTERFACE_REQ_RES_PREFIX,false); } //打印自定義接口入參及出參 public static void printCustomReqAndRes(String interfaceName){ PrintPbUtil.printCustomReq(interfaceName,USER); PrintPbUtil.printCustomRes(interfaceName); } //打印接口入參及出參pb生成 入參爲:通過properties文件配置參數 適用於新增、修改類接口 public static void printReqAndResPbReq(String tableName){ PrintPbUtil.printListQueryInfo(INTERFACE_REQ_RES_PREFIX+RoleUtil.convertTableNameReq(tableName)); } //打印接口入參 可指定字段進行打印 public static void printPrimaryKeyReq(String tableName,String inputColumn){ PrintPbUtil.printPrimaryKeyInfo(INTERFACE_REQ_RES_PREFIX+RoleUtil.convertTableNameReq(tableName),inputColumn); } //出參:返回表數據列表 public static void printReturnListRes(String tableName) { PrintPbUtil.printOneTableToPbRes(tableName,INTERFACE_REQ_RES_PREFIX,true); } //出參:不返回表數據列表 public static void printNoReturnListRes(String tableName) { PrintPbUtil.printOneTableToPbRes(tableName,INTERFACE_REQ_RES_PREFIX,false); } //出參:返回表數據對象 public static void printReturnObjectRes(String tableName) { PrintPbUtil.printOneTableToPbRes(tableName,INTERFACE_REQ_RES_PREFIX,false,false,true); } //打印接口的實體類信息(與數據庫表保持一致)的pb輸出 public static void printOneTableToPbInfo(String tableName){ PrintPbUtil.printOneTableToPbInfo(tableName,true,false); } //針對入參:主鍵id,出參:實體類對象的場景封裝 如:查看詳情、刪除接口 public static void printPropertiesInterfacePb(){ String[] propertiesTableNames = PrintPbUtil.getPropertiesTableNames(); for (int i=0;i<propertiesTableNames.length;i++){ printInterfacePb(propertiesTableNames[i]); MSGID++; } } //打印入參及出參對象 public static void printReqAndResPb(boolean isReturnObject){ String[] propertiesStrings = PrintPbUtil.getPropertiesStrings(PrintPbUtil.PRIMARY_KEY, ","); String[] propertiesTableNames = PrintPbUtil.getPropertiesTableNames(); String inputColumn = null; if(!CommonUtil.stringsHelp(propertiesStrings)) inputColumn = "id:int"; int length = propertiesStrings.length-1; for (int i=0;i<propertiesTableNames.length;i++){ if(length >= i) inputColumn = propertiesStrings[i]; else inputColumn = "id:int"; printPrimaryKeyReq(propertiesTableNames[i],inputColumn); PrintPbUtil.printOneTableToPbRes(propertiesTableNames[i],INTERFACE_REQ_RES_PREFIX,false,false,isReturnObject); MSGID++; } } //打印頭信息 public static void printHeaderPb(){ String syntax = PropertiesUtil.getPbPropertyValue("syntax"); String importValue = PropertiesUtil.getPbPropertyValue("importValue"); String javaMultipleFiles = PropertiesUtil.getPbPropertyValue("javaMultipleFiles"); String javaGenericServices = PropertiesUtil.getPbPropertyValue("javaGenericServices"); String javaPackage = PropertiesUtil.getPbPropertyValue("javaPackage"); String javaOuterClassname = PropertiesUtil.getPbPropertyValue("javaOuterClassname"); System.out.printf("%s%s%s%s","syntax=","\"",syntax,"\";").println(); System.out.printf("%s %s%s%s","import","\"",importValue,"\";").println(); System.out.printf("%s %s%s","option","java_multiple_files","="+javaMultipleFiles+";").println(); System.out.printf("%s %s%s","option","java_generic_services","="+javaGenericServices+";").println(); System.out.printf("%s %s%s%s%s","option","java_package=","\"",javaPackage,"\";").println(); System.out.printf("%s %s%s%s%s","option","java_outer_classname=","\"",javaOuterClassname,"\";").println(); } //打印service start 注:需要在後面補"}" public static void printServiceStart() { String serviceName = PropertiesUtil.getPbPropertyValue("serviceName"); String serviceId = PropertiesUtil.getPbPropertyValue("serviceId"); System.out.printf("%s %s %s","service",serviceName,"{").println(); System.out.printf(" %s %s %s","option","(krpc.serviceId)=",serviceId+";").println(); } //打印User詳情信息 public static void printUser(){ System.out.printf("%s %s %s","message","User","{").println(); System.out.printf(" %s %s %s","int64","userId","=1;").println(); System.out.printf(" %s %s %s","string","userName","=2;").println(); System.out.printf(" %s %s %s","string","nickName","=3;").println(); System.out.printf("}").println(); } //打印webroute.xml文件信息 public static void printWebRoutesDetail(){ String prefix = PropertiesUtil.getPbPropertyValue("prefix"); String serviceId = PropertiesUtil.getPbPropertyValue("serviceId"); System.out.printf("%s","<group hosts=\"*\" prefix=\""+ prefix + "\" origins=\"*\" method=\"get,post\" " + "serviceId=\"" + serviceId +"\">").println(); //獲取配置文件中的自定義接口 for (String name : PrintPbUtil.getPropertiesInterfaceNames()) { System.out.printf(" %s","<url path=\"/" + name.toLowerCase()+"\"" + " msgId=\""+MSGID+"\" needLogin=\"normal\"/>").println(); MSGID++; } System.out.printf("%s","</group>").println(); } //打印對象json對象 public static void printJsonObject(String tableName){ PrintPbUtil.printOneTableToPbInfo(tableName,false,true); } public static void main(String[] args) { printHeaderPb(); } }
7,pb接口自動生成完整:
package com.cn.pb.process.app; /** * Created by lizhihao on 2019/4/7 22:08 * 打印完整pb文件內容 */ public class PrintPbAllApp extends PrintPbParentApp { public static void main(String[] args) { //打印頭信息 printHeaderPb(); //打印service start printServiceStart(); //打印新增接口 PrintPbCreateApp.printPropertiesCreateInterfacePb(); //打印刪除接口 PrintPbDeleteApp.printPropertiesDeleteInterfacePb(); //打印修改接口 PrintPbUpdateApp.printPropertiesUpdateInterfacePb(); //打印列表查詢接口 PrintPbListApp.printPropertiesListInterfacePb(); //打印查看詳情接口 PrintPbDetailApp.printPropertiesDeleteInterfacePb(); //打印service end System.out.printf("%s","}").println(); System.out.println(); //開始打印入參及出參對象 //打印新增接口 PrintPbCreateApp.printCreateReqAndResPb(); //打印刪除 PrintPbDeleteApp.printDeleteReqAndResPb(); //打印修改接口 PrintPbUpdateApp.printUpdateReqAndResPb(); //打印列表查詢接口 PrintPbListApp.printListReqAndResPb(); //打印查看詳情接口 PrintPbDetailApp.printDeleteReqAndResPb(); } }