zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    -----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------ (蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
  • 相关阅读:
    df
    浅谈C#垃圾回收
    eclipse+ADT 进行android应用签名详解
    Android Monkey工具参数意义
    Android Monkey(转载)
    清理Win7右键菜单里“发送到”选项
    Android中LOG机制详解(上)  
    关于微博内容中的短地址ShortURL
    Android中LOG机制详解(下)
    黑盒测试用例设计方法实践(判定表驱动法)
  • 原文地址:https://www.cnblogs.com/pxblog/p/15133228.html
Copyright © 2011-2022 走看看