⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractupdatesql.java

📁 羽量级数据持久层开发框架
💻 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 + -