pb自動生成之增刪改查

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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章