package common.utils.model;

import com.jfinal.plugin.activerecord.Model;

public class SqlUtil {
	public static String generateReplaceSql(String table, Model<?> model) {
		StringBuilder sqlBuilder = new StringBuilder().append("insert ").append("into ");
		sqlBuilder.append(table).append(" ");
		String[] modelKeys = model._getAttrNames();
		
		// 生成字段
		sqlBuilder.append("(");
		for (String key : modelKeys) {
			sqlBuilder.append('`').append(key).append('`');
			sqlBuilder.append(", ");
		}
		sqlBuilder.append("`create_time`");
		sqlBuilder.append(") ");
		
		// 生成参数占位符
		sqlBuilder.append("values (");
		for (int i = 0; i < modelKeys.length; i++) {
			sqlBuilder.append('?');
			sqlBuilder.append(", ");
		}
		sqlBuilder.append("?) ");
		
		// 生成后续更新部分
		sqlBuilder.append("on duplicate key update ");
		for (String modelKey : modelKeys) {
			sqlBuilder.append(modelKey).append("=?");
			sqlBuilder.append(", ");
		}
		sqlBuilder.append("update_time=?");
		
		return sqlBuilder.toString();
	}
}
