调用query这个方法需要
SQLConstant
FieldParam
FieldOp
OrderParam
OrderOp
使用方法:
// 字段名
String columnStr = "id,name,age";
List<String> columns = Arrays.asList(columnStr.split(","));
FieldParam fieldParam = new FieldParam();
fieldParam.addFieldLike("模糊查询","模糊查询");
OrderParam orderParam = new OrderParam();
orderParam.addDESC("需要倒序排序的字段");
String SQL = query("表名", columns, fieldParam, orderParam);
public String query(String tableName, List<String> columns, FieldParam fieldParam, OrderParam orderParam) {
StringBuilder sqlStart = new StringBuilder("select");
for (int i = 0; i < columns.size(); i++) {
sqlStart.append(columns.get(i));
sqlStart.append(i == columns.size() -1 ? "" : ",");
}
sqlStart.append("from").append(tableName);
List<FieldOp> fieldOpList = fieldParam.getFieldOpList();
List<OrderOp> orderOpList = orderParam == null ? null : orderParam.getOrderOpList();
if (fieldOpList != null && !fieldOpList.isEmpty()) {
sqlStart.append(" where 1=1");
for (FieldOp fieldOp : fieldOpList) {
sqlStart.append("and").append(fieldOp.getFieldName()).append(" ").append(fieldOp.getOp());
sqlStart.append(" :").append(fieldOp.getFieldName()).append(" ");
}
}
if (orderOpList != null && !orderOpList.isEmpty()) {
sqlStart.append(" order by ");
for (int i = 0; i < orderOpList.size(); i++) {
OrderOp orderOp = orderOpList.get(i);
sqlStart.append(i == 0 ? "" : ",");
sqlStart.append(orderOp.getFieldName()).append(" ").append(orderOp.getDirection());
}
}
return sqlStart.toString();
}
public class FieldParam {
List<FieldOp> fieldOpList = new ArrayList<>();
public FieldParam() {
}
public FieldParam addFieldLike(String fieldName, Object value) {
if (fieldName != null && fieldName.equals("")) {
FieldOp fieldOp = new FieldOp(fieldName, SQLConstant.LIKE, value);
this.fieldOpList.add(fieldOp);
}
return this;
}
public List<FieldOp> getFieldOpList() {
return fieldOpList;
}
}
public class FieldOp {
private String fieldName;
private String op;
private Object fieldValue;
public FieldOp(String fieldName, String op, Object fieldValue) {
this.fieldName = fieldName;
this.op = op;
this.fieldValue = fieldValue;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public Object getFieldValue() {
return fieldValue;
}
public void setFieldValue(Object fieldValue) {
this.fieldValue = fieldValue;
}
}
public class OrderParam {
private List<OrderOp> orderOpList = new ArrayList<>();
public OrderParam() {
}
public OrderParam addDESC(String fieldName) {
if (fieldName != null && fieldName.equals("")){
OrderOp op = new OrderOp(fieldName,SQLConstant.DESC);
this.orderOpList.add(op);
}
return this;
}
public List<OrderOp> getOrderOpList() {
return orderOpList;
}
}
public class OrderOp {
/**
* 字段名
*/
private String fieldName;
/**
* 正序、倒序(ASC/DESC)
*/
private String direction;
public OrderOp(String fieldName, String direction) {
this.fieldName = fieldName;
this.direction = direction;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getDirection() {
return direction;
}
public void setDirection(String direction) {
this.direction = direction;
}
}
public class SQLConstant {
public final static String LIKE = "like";
public final static String DESC = "desc";
}