天天看點

自動生成mybatis中baseColumn 公共字段名稱 代碼沒有多難,但感覺還是有點小用,希望可以幫到大家,第一次寫有不對的地方希望大家指出了

   最近在工作中遇到表中有100多個字段,要寫公共的查詢列實在頭大,是以突然想到可以從生成的sql執行腳本中,把該表中的列截取出來如這樣的資料:

自動生成mybatis中baseColumn 公共字段名稱 代碼沒有多難,但感覺還是有點小用,希望可以幫到大家,第一次寫有不對的地方希望大家指出了

很有規律對不對,然後上代碼

private static void autoCreateBaseColumn(String filePath,String columnFix) {

            //首先擷取到檔案 我是儲存到本地的一個txt檔案,每次拿時友善,另一個參數是要加的字首,一般為表的簡寫

            String strFile = filePath; 

            //把檔案内容用流的形式拿出來放到String變量中

            StringBuffer sb = new StringBuffer();

            try {

                BufferedReader reader = new BufferedReader(new FileReader(strFile));

                String str = ""    ;

                while((str = reader.readLine())!=null) { //按行擷取

                    String string = str.trim();

                    String[] split = string.split(" ");

                    sb.append(columnFix+split[0]+",");

                    sb.append("\r\n");

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

            //然後對string進行操作

            //一行輸出

            //String substring = sb.toString().substring(0,sb.length()-1);

            //分行輸出

            String substring = sb.toString().substring(0,sb.length()-3);

            System.out.println(substring);

        }

最後,在控制台展出

自動生成mybatis中baseColumn 公共字段名稱 代碼沒有多難,但感覺還是有點小用,希望可以幫到大家,第一次寫有不對的地方希望大家指出了

确實很友善,而且通過這樣啟發,resultMap的列也可以這樣生成,代碼如下:

private static void autoCreateResult(String filePath) {

            try {

                BufferedReader reader = new BufferedReader(new FileReader(filePath));

                String str = "";

                StringBuffer sb = new StringBuffer();

                while((str = reader.readLine())!=null) {

                    str = str.trim();

                    String[] split = str.split(" ");

                    sb.append("<result column=");

                    sb.append("\""+split[0]+"\" ");  //還是通過空格分隔

                    String lowerCase = split[0].toLowerCase();  //先把所有的字段轉為小寫

                    String[] split2 = lowerCase.split("_");

                    for (int i= 0;i<split2.length;i++) {  

                        if(i == 0) {

                            lowerCase = split2[i];

                        }else {

                            lowerCase = lowerCase+ split2[i].substring(0, 1).toUpperCase()+split2[i].substring(1); //将_後的第一個字母大寫

                        }

                    }

                    sb.append("property=\"");

                    sb.append(lowerCase+"\" ");

                    sb.append(" jdbcType=\"");

                    String type = "" ;

                    for(int i = 1;i<split.length;i++) {

                        if(!split[i].trim().startsWith(" ")) { //擷取jdbc類型,starWith裡要打個空格,要不一直進不去判斷裡,系統大牛可以解釋一下

                            String string = split[i];

                            if(string.startsWith("VARCHAR")) {

                                type = "VARCHAR";

                            }else if(string.startsWith("NUMBER")) {

                                type = "DECIMAL";

                            }else if(string.startsWith("DATE")) {

                                type = "DATE";

                            }

                        }

                    }

                    sb.append(type+"\"");

                    sb.append(" />");

                    sb.append("\r\n");

                }

                System.out.println(sb.toString());

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

列印出如下:

自動生成mybatis中baseColumn 公共字段名稱 代碼沒有多難,但感覺還是有點小用,希望可以幫到大家,第一次寫有不對的地方希望大家指出了

 代碼沒有多難,但感覺還是有點小用,希望可以幫到大家,第一次寫有不對的地方希望大家指出了

繼續閱讀