package com.walker.jdbc.sqlgen; import java.util.HashMap; import java.util.Map; /** * SQL片段生成工具 */ public class SqlFragmentBuilder { private StringBuffer sql; private Map parameters; public SqlFragmentBuilder() { this.sql = new StringBuffer(); this.parameters = new HashMap<>(); } public SqlFragmentBuilder(String sql) { this.sql = new StringBuffer(sql); this.parameters = new HashMap<>(); } /** * 如果value不为空,添加sql片段fragment * * @param fragment SQL片段 * @param parameter sql参数名 * @param value sql参数值 */ public void add(String fragment, String parameter, Object value) { if (value != null && !"".equals(value)) { this.sql.append(" ").append(fragment); this.parameters.put(parameter, value); } } /** * 如果enable,添加sql片段fragment * * @param fragment SQL片段 * @param parameter sql参数名 * @param value sql参数值 * @param enable 是否启用SQL片段 */ public void add(String fragment, String parameter, Object value, boolean enable) { if (enable) { this.sql.append(" ").append(fragment); this.parameters.put(parameter, value); } } /** * 如果value不全为空,添加sql片段fragment * * @param fragment SQL片段 * @param parameter1 sql参数名1 * @param value1 sql参数值1 * @param parameter2 sql参数名2 * @param value2 sql参数值2 */ public void add(String fragment, String parameter1, Object value1, String parameter2, Object value2) { if (value1 != null || value2 != null) { this.sql.append(" ").append(fragment); this.parameters.put(parameter1, value1); this.parameters.put(parameter2, value2); } } /** * 如果enable,添加sql片段fragment * * @param fragment SQL片段 * @param parameter1 sql参数名1 * @param value1 sql参数值1 * @param parameter2 sql参数名2 * @param value2 sql参数值2 * @param enable 是否启用SQL片段 */ public void add(String fragment, String parameter1, Object value1, String parameter2, Object value2, boolean enable) { if (enable) { this.sql.append(" ").append(fragment); this.parameters.put(parameter1, value1); this.parameters.put(parameter2, value2); } } /** * 如果value不全为空,添加sql片段fragment * * @param fragment SQL片段 * @param parameter1 sql参数名1 * @param value1 sql参数值1 * @param parameter2 sql参数名2 * @param value2 sql参数值2 * @param parameter3 sql参数名3 * @param value3 sql参数值3 */ public void add(String fragment, String parameter1, Object value1, String parameter2, Object value2, String parameter3, Object value3) { if (value1 != null || value2 != null || value3 != null) { this.sql.append(" ").append(fragment); this.parameters.put(parameter1, value1); this.parameters.put(parameter2, value2); this.parameters.put(parameter3, value3); } } /** * 如果enable,添加sql片段fragment * * @param fragment SQL片段 * @param parameter1 sql参数名1 * @param value1 sql参数值1 * @param parameter2 sql参数名2 * @param value2 sql参数值2 * @param parameter3 sql参数名3 * @param value3 sql参数值3 * @param enable 是否启用SQL片段 */ public void add(String fragment, String parameter1, Object value1, String parameter2, Object value2, String parameter3, Object value3, boolean enable) { if (enable) { this.sql.append(" ").append(fragment); this.parameters.put(parameter1, value1); this.parameters.put(parameter2, value2); this.parameters.put(parameter3, value3); } } /** * 添加sql片段 * * @param fragment * @return */ public void add(String fragment) { this.sql.append(" ").append(fragment); } /** * 获取sql片段 * * @return */ public String getFragment() { return sql.toString(); } /** * 获取sql片段,删除前导and * * @return */ public String getNoLeadingAndFragment() { return sql.toString().replaceAll("^(?i) *and", ""); } /** * 获取参数对象 * * @return */ public Map getParameters() { return parameters; } @Override public String toString() { return new StringBuilder(sql).append(", parameters=").append(this.parameters).toString(); // return ToStringBuilder.reflectionToString(this); } }