package com.taobao.tddl.repo.mysql.sqlconvertor; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.taobao.tddl.common.jdbc.ParameterContext; /** * 一条需要执行的sql * * @author whisper */ public class Sql { /** * 执行的sql */ private String sql; /** * 绑定变量 */ private Map<Integer, ParameterContext> param; private Object ds; public void clear() { param.clear(); } public boolean containsKey(Object key) { return param.containsKey(key); } public boolean containsValue(Object value) { return param.containsValue(value); } public Set<Entry<Integer, ParameterContext>> entrySet() { return param.entrySet(); } public boolean equals(Object o) { return param.equals(o); } public ParameterContext get(Object key) { return param.get(key); } public int hashCode() { return param.hashCode(); } public boolean isEmpty() { return param.isEmpty(); } public Set<Integer> keySet() { return param.keySet(); } public ParameterContext put(Integer key, ParameterContext value) { return param.put(key, value); } public void putAll(Map<? extends Integer, ? extends ParameterContext> m) { param.putAll(m); } public ParameterContext remove(Object key) { return param.remove(key); } public int size() { return param.size(); } public Collection<ParameterContext> values() { return param.values(); } public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } public Map<Integer, ParameterContext> getParam() { return param; } public void setParam(Map<Integer, ParameterContext> param) { this.param = param; } @Override public String toString() { final int maxLen = 10; StringBuilder builder = new StringBuilder(); if (sql != null) { builder.append(sql); } // 非空判断 if (param != null && !param.isEmpty()) builder.append(toString(param.entrySet(), maxLen)); builder.append(" " + this.getDataSource()); builder.append("\n"); return builder.toString(); } private String toString(Collection<?> collection, int maxLen) { StringBuilder builder = new StringBuilder(); builder.append("["); int i = 0; for (Iterator<?> iterator = collection.iterator(); iterator.hasNext() && i < maxLen; i++) { if (i > 0) builder.append(", "); builder.append(iterator.next()); } builder.append("]"); return builder.toString(); } public void setDataSoruce(Object ds) { this.ds = ds; } public Object getDataSource() { return this.ds; } }