📄 abstractupdatesql.java
字号:
package org.speedframework.sql;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import org.speedframework.exception.SpeedFrameworkException;
import org.speedframework.utilities.StringUtils;
/**
* Class AbstractUpdateSQL
*
* @author <a href="mailto:santafeng@gmail.com"> lizf </a>
* @version $Revision:1.0.0, $Date: 2007-11-1 上午06:31:44 $
*/
public abstract class AbstractUpdateSQL extends AbstractCommonSQL implements
IUpdateSQL {
protected String[] columns;
/**
*
* @param primateKeys
* @param fields
*/
private List getColumnWithoutPrimate(String[] primateKeys, Field[] fields) {
List primate = null;
if (primateKeys.length > 0) {
primate = new ArrayList();
for (int i = 0; i < primateKeys.length; i++) {
primate.add(primateKeys[i]);
}
}
List list = new ArrayList();
for (int i = 0; i < fields.length; i++) {
String column_ = StringUtils.getField(fields[i]);
if (primate.size() == 0) {
continue;
} else if (!primate.contains(column_)
&& !column_.toLowerCase().equals("serialversionuid")) {
list.add(column_);
}
}
return list;
}
/**
*
* @param SQL
*/
public List getParam(String SQL) {
SQL = SQL.toLowerCase();
String[] sql_type = null;
String column_str = null;
String param_str = null;
String[] column_set = null;
String[] param_set = null;
List list_column = new ArrayList();
List list = new ArrayList();
if (SQL.indexOf("where") != -1) {
sql_type = SQL.split("where");
column_str = sql_type[0];
} else {
column_str = SQL;
}
if (sql_type != null) {
param_str = sql_type[sql_type.length - 1];
param_set = param_str.split("and");
}
column_str = column_str.substring(column_str.indexOf("set") + 4,
column_str.length()).trim();
column_set = column_str.split(",");
for (int i = 0; i < column_set.length; i++) {
String column_ = column_set[i].trim();
if (column_.indexOf("(") != -1) {
for (int turn = 0; turn < column_set.length; turn++) {
if (!StringUtils.checkMatching(column_)) {
column_ = column_ + "," + column_set[i + 1];
i = i + 1;
continue;
} else {
list.add(column_);
column_ = null;
break;
}
}
} else {
list.add(column_);
column_ = null;
}
}
for (int k = 0; k < list.size(); k++) {
String column_name = (String) list.get(k);
if (column_name.indexOf("?") != -1) {
column_name = column_name
.substring(0, column_name.indexOf("="));
list_column.add(column_name);
}
}
if (param_set != null) {
for (int j = 0; j < param_set.length; j++) {
String param_ = param_set[j].trim();
if (param_.indexOf("?") != -1) {
param_ = param_.substring(0, param_.indexOf("="));
list_column.add(param_);
}
}
}
return list_column;
}
/**
* Method getSQL
*
* @return SQL�?
*/
public String getSQL() {
StringBuffer up_sql = new StringBuffer();
StringBuffer condition_ = new StringBuffer();
StringBuffer rel_sql = new StringBuffer();
try {
Field[] fields = tableObject.getClass().getDeclaredFields();
List columnlist = getColumnWithoutPrimate(columns, fields);
for (int i = 0; i < columnlist.size(); i++) {
if (i < (columnlist.size() - 1)) {
up_sql.append(columnlist.get(i) + "=? , ");
} else {
up_sql.append(columnlist.get(i) + "=? ");
}
}
condition_.append(" where 1=1 ");
if (columns.length > 0) {
for (int i = 0; i < columns.length; i++) {
condition_.append(" and " + columns[i] + "=? ");
}
}
// Iterator it = columns.iterator();
// while (it.hasNext()) {
// condition_.append(" and " + it.next() + "=? ");
// }
up_sql.append(condition_.toString());
rel_sql.append("update " + this.getTableName() + " set ");
} catch (Exception e) {
throw new SpeedFrameworkException(e);
}
return rel_sql.append(up_sql.toString()).toString();
}
/**
*
* @param columns
*/
public void setColumn(String[] columns) {
this.columns = columns;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -