JAVA通過實體類生成數據庫查詢語句(駝峰命名規則)


 

 

import java.io.IOException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

/***
 * 通過java Class 生成查詢語句
 */
public class SelectTable {
    public static Map<String, String> javaProperty2SqlColumnMap = new HashMap<>();

    static {
        javaProperty2SqlColumnMap.put("Integer", "INTEGER");
        javaProperty2SqlColumnMap.put("Short", "tinyint");
        javaProperty2SqlColumnMap.put("Long", "bigint");
        javaProperty2SqlColumnMap.put("BigDecimal", "decimal(19,2)");
        javaProperty2SqlColumnMap.put("Double", "double precision not null");
        javaProperty2SqlColumnMap.put("Float", "float");
        javaProperty2SqlColumnMap.put("Boolean", "tinyint");
        javaProperty2SqlColumnMap.put("Timestamp", "datetime");
        javaProperty2SqlColumnMap.put("String", "VARCHAR(255)");
        javaProperty2SqlColumnMap.put("Date", "datetime");
    }


    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        selectTable(Test.class, "g_test");

    }

    public static String selectTable(Class obj, String tableName) throws IOException {


        Field[] fields = null;
        fields = obj.getDeclaredFields();
        String column = null;
        StringBuilder sb = null;
        sb = new StringBuilder(50);


        String tableAlias = getTableAlias(tableName);

        sb.append("select ");
        for (Field f : fields) {
            column = f.getName();
            if (column.equals("serialVersionUID")) {
                continue;
            }

            String columnName = camelToUnderline(column, 1);

            sb.append(tableAlias+"."+columnName + "");
            sb.append(" as ");
            sb.append(column);
            sb.append(" ,");


        }

        sb.deleteCharAt(sb.length() - 1);


        sb.append(" from " + tableName+" "+tableAlias);
        String sql = sb.toString();

        System.out.println(sql);
        System.out.println("#----------------------------------------");

        return sql;


    }


    /**
     * 獲取表名的別名 最后一個單詞的首字母
     * @param tableName
     * @return
     */
    public static String getTableAlias(String tableName) {
        String[] split = tableName.split("_");
        String table = split[split.length - 1];
        return table.charAt(0) + "";

    }


    /**
     * 駝峰轉下划線
     *
     * @param param
     * @param charType
     * @return
     */
    public static String camelToUnderline(String param, Integer charType) {
        if (param == null || "".equals(param.trim())) {
            return "";
        }
        int len = param.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append("_");
            }
            if (charType == 2) {
                sb.append(Character.toUpperCase(c));  //統一都轉大寫
            } else {
                sb.append(Character.toLowerCase(c));  //統一都轉小寫
            }


        }

        String s = sb.toString();
        if (s.startsWith("_")) {
            s = s.substring(1, s.length());
        }

        return s;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM