zoukankan      html  css  js  c++  java
  • java动态生成SQL中的where条件

    在编写接口的时候,查询关系型数据库是经常有的事情,如果我们不用hibernate,也不想写大量无聊的SQL,那该怎么办?

    其实用反射的方式获取表的表名和字段名非常容易,但是拼接where条件则比较难,我尝试了一下,也是可以做到的。

    代码有些冗长,还有待改进

    @AllArgsConstructor
    @Data
    public class Condition {
    
        private String conditionName;
        private String operator;
        private Boolean isString;
        private Object conditionValue;
    
    
        /**
         * 构建有关键字占位符的SQL条件语句
         * @param conditions
         * @return
         */
        public static String toSql(List<Condition> conditions) {
            StringBuilder sb = new StringBuilder("where ");
            int size = conditions.size();
            for (int i = 0; i < size; i++) {
                Condition condition = conditions.get(i);
                String conditionName = condition.getConditionName();
                Object conditionValue = condition.getConditionValue();
                sb.append(conditionName)
                        .append(condition.getOperator());
                boolean conditionType = condition.getIsString();
                if (conditionType) {
                    sb.append(String.format(" '%s' ",conditionValue));
                } else {
                    sb.append(String.format(" %s ",conditionValue));
                }
                if (i != size - 1) {
                    sb.append(" and ");
                }
    
            }
            return sb.toString();
        }
    
        public static void main(String[] args) {
            List<Condition> conditions = new ArrayList<>();
            Condition bizmonth = new Condition("bizmonth", "=", true,"2021-06");
            Condition tenant_code = new Condition("tenant_code", "=", false,"0385");
            Condition create_time = new Condition("create_time", ">", true,"2021-06-09 10:08:00");
            conditions.add(bizmonth);
            conditions.add(tenant_code);
            conditions.add(create_time);
            String sql = toSql(conditions);
            System.out.println(sql);
    
    
        }
    }
    结果:
    where bizmonth= '2021-06'  and tenant_code= 0385  and create_time> '2021-06-09 10:08:00' 
  • 相关阅读:
    《圣女贞德》全技能合成表(psp)
    [转] 委外加工Procurement
    SAP HR TCode List
    IDES ABAP/4破解及client copy [转]
    [ SAP Interview ] SAP Basis Consultant Questionnaire
    [FI/CO] Controlling Question From Key User / Q & A
    SAP Monthly Closed
    [SAP Dictionary]
    UI Leader infragistic 2008 CLR download address link (Infragistics NetAdvantage For .NET 2008 CLR)
    SAP SubContract Processing
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14928298.html
Copyright © 2011-2022 走看看