zoukankan      html  css  js  c++  java
  • 比较快速的生成sql语句和mybatis的xml 2021-02-03 15:40,最后修改时间:2021年02月26日 10:38

    import java.util.Arrays;
    import java.util.List;
    
    public class GenerateColumns {
    
        public static final String DOT = ".";
        public static final String BLANK = " ";
        public static final String COMMA = ",";
        public static final String UNDERLINE = "_";
        public static String originalColumns = "EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO";
        public static String newColumns = "E_EMPNO,E_ENAME,E_JOB,E_MGR,E_HIREDATE,E_SAL,E_COMM,E_DEPTNO";
        
        public static void main(String[] args) {
            String sql = generateSql("EMP", "E");
            System.out.println(sql);
            String xmlStr = generateMyBatisXml(newColumns);
            System.out.println(xmlStr);
        }
        
        public static String generateMyBatisXml(String newColumns) {
            String xmlStr = "";
            String[] originalColumnArr = originalColumns.split(",");
            String[] newColumnArr = newColumns.split(",");
            List<String> newColumnList = Arrays.asList(newColumnArr);
            for(int i = 0; i < newColumnList.size(); i++) {
                String currentXmlStr = null;
                if(i == 0) {
                    currentXmlStr = "<id column="" 
                            + newColumnList.get(i).toUpperCase()
                            + """
                            + BLANK 
                            + "jdbcType="VARCHAR""
                            + BLANK
                            + "property=""
                            + generatePropertyName(originalColumnArr[i])
                            + ""/>"
                            + "
    ";
                }else {
                    currentXmlStr = "<result column="" 
                            + newColumnList.get(i).toUpperCase()
                            + """
                            + BLANK 
                            + "jdbcType="VARCHAR""
                            + BLANK
                            + "property=""
                            + generatePropertyName(originalColumnArr[i])
                            + ""/>"
                            + "
    ";
                }
                xmlStr += currentXmlStr;
            }
            return xmlStr;
        }
        
        public static String generatePropertyName(String columnName) {
            String propertyName = "";
            String[] columnNameArr = null;
            if(columnName.indexOf(UNDERLINE) > 0) {
                columnNameArr = columnName.split(UNDERLINE);
                if(columnNameArr != null) {
                    for(int i = 0; i < columnNameArr.length; i++) {
                        String currentStr = columnNameArr[i];
                        if(i == 0) {
                            currentStr = currentStr.toLowerCase();
                        }else {
                            if(currentStr.length() > 0) {
                                currentStr = currentStr.toLowerCase();
                                currentStr = currentStr.substring(0, 1).toUpperCase() + currentStr.substring(1);
                            }
                        }
                        propertyName += currentStr;
                    }
                }
            }else {
                propertyName = columnName.toLowerCase();
            }
            return propertyName;
        }
        
        public static String generateSql(String tableName, String tableAbbr){
            String sql = "SELECT" + BLANK;
            String[] originalColumnArr = originalColumns.split(COMMA);
            List<String> originalColumnList = Arrays.asList(originalColumnArr);
            String[] newColumnArr = newColumns.split(COMMA);
            List<String> newColumnList = Arrays.asList(newColumnArr);
            if(originalColumnList.size() == newColumnList.size()) {
                for(int i = 0; i < originalColumnList.size(); i++) {
                    sql += tableAbbr.toUpperCase() + DOT 
                        + originalColumnList.get(i).toUpperCase()
                        + BLANK 
                        + newColumnList.get(i).toUpperCase()
                        + COMMA;
                }
                sql = sql.substring(0, sql.length() - 1);
                sql += BLANK + "FROM" + BLANK + tableName.toUpperCase()
                    + BLANK
                    + tableAbbr.toUpperCase();
            }
            return sql;
        }
    
    }

    以上是代码,运行结果展示如下:

    最后修改时间:2021年02月26日 10:38

    2015年10月-2016年3月 总计:5个月.
    2016年11月-2017年6月 总计:7个月.
    2017年7月-2018年4月 总计:9个月.
    2018年5月-2018年5月 总计:1个月.
    2018年6月-2018年12月 总计:6个月.
    2019年1月-2019年12月 总计11个月.
    2020年2月-2021年2月 总计13个月.
    所有总计:5+7+9+1+6+11+13=52个月(4年4个月).
    本人认同二元论.我是理想主义者,现实主义者,乐观主义者,有一定的完美主义倾向.不过,一直都是咸鱼(菜鸟),就算有机会,我也不想咸鱼翻身.(并不矛盾,因为具体情况具体分析)
    英语,高等数学,考研,其他知识学习打卡交流QQ群:946556683
  • 相关阅读:
    若干排序算法简单汇总(二)
    合并两个链表的问题
    pl/sql(2)
    jQuery的DOM操作之加入元素和删除元素
    怎样优雅的研究 RGSS3 (四) 使窗体从画面边缘弹出
    Android经常使用UI组件
    在Hadoop监控页面怎样查看Hive的完整SQL
    HDU4911:Inversion
    AIX系统开启ftp服务
    JavaScript 模拟策略模式
  • 原文地址:https://www.cnblogs.com/JimmySeraph/p/14367391.html
Copyright © 2011-2022 走看看