public classSqlHandle {privateStringBuffer sql;private List list = new ArrayList();publicSqlHandle() {
}publicSqlHandle(String sql) {this.sql = newStringBuffer(sql);
}public staticSqlHandle getInstance(String sql) {return newSqlHandle(sql);
}/***
* @类名称:add
* @类描述:添加条件
*@paramcondition*/
public voidadd(Condition condition) {this.list.add(condition);
}publicString getSql() {return this.sql.append(this.getwhereString()).toString();
}public voidprintSql() {
System.out.println("生成的sql语句:" + this.sql.toString() + this.getwhereString());
}/** 得到where子句,以?为占位符。*/
/***
* @类名称:getwhereString
* @类描述:得到where子句,以?为占位符。通过条件集合中所存储的条件进行and拼接的where子句
* @注意:不能与getwhereOrString同时使用
*@return:拼接好的where子句*/
publicString getwhereString() {
StringBuffer sb= newStringBuffer();if (list.size() <= 0) {return "";
}else{
sb.append(" where 1=1 and");for(Condition item : list) {
sb.append(" " +item.getName());switch(item.getOpertion()) {caseEqual:
sb.append(" = ");break;caseUnEqual:
sb.append(" <> ");break;caseGreatThan:
sb.append(" >= ");break;caseLessThan:
sb.append(" <= ");break;caseLike:
sb.append(" like ");break;
}
sb.append("? and");
}if (sb.toString().endsWith("and")) {
sb.delete(sb.length()- 3, sb.length());
}returnsb.toString();
}
}/***
* @类名称:getwhereOrString
* @类描述:得到where子句,以?为占位符。通过条件集合中所存储的条件进行or拼接的where子句
* @注意:不能与getwhereString同时使用
*@return:拼接好的where子句
* @创建时间2014/4/16*/
publicString getwhereOrString() {
String result= this.getwhereString();return result.replace("and", "or");
}/***
* @类名称:getwhereNotWithWhere
* @类描述:得到where子句,以?为占位符。通过条件集合中所存储的条件进行and拼接的where子句,并且去掉where关键字
* @注意:不能与其他getwhere方法同时使用
*@return:拼接好的where子句,去掉where关键字
* @创建时间2014/4/16*/
publicString getwhereNotWithWhere() {
String result= this.getwhereString();return result.replace(" where ", " ");
}
/***
* @类名称:getwhereValues
* @类描述:通过条件集合中的条件得到与where字句位置对应的object集合。存储所有的值
*@return:*/
publicObject[] getwhereValues() {
Object[] obj= new Object[this.list.size()];for (int i = 0; i < this.list.size(); i++) {
obj[i]= this.list.get(i).getValue();
}returnobj;
}
}