import com.lidroid.xutils.db.table.Id; //导入方法依赖的package包/类
public static SqlInfo buildUpdateSqlInfo(DbUtils db, Object entity, String... updateColumnNames) throws DbException {
List keyValueList = entity2KeyValueList(db, entity);
if (keyValueList.size() == 0) return null;
HashSet updateColumnNameSet = null;
if (updateColumnNames != null && updateColumnNames.length > 0) {
updateColumnNameSet = new HashSet(updateColumnNames.length);
Collections.addAll(updateColumnNameSet, updateColumnNames);
}
Class> entityType = entity.getClass();
Table table = Table.get(db, entityType);
Id id = table.id;
Object idValue = id.getColumnValue(entity);
if (null == idValue) {
throw new DbException("this entity[" + entity.getClass() + "]'s id value is null");
}
SqlInfo result = new SqlInfo();
StringBuffer sqlBuffer = new StringBuffer("UPDATE ");
sqlBuffer.append(table.tableName);
sqlBuffer.append(" SET ");
for (KeyValue kv : keyValueList) {
if (updateColumnNameSet == null || updateColumnNameSet.contains(kv.key)) {
sqlBuffer.append(kv.key).append("=?,");
result.addBindArgWithoutConverter(kv.value);
}
}
sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
sqlBuffer.append(" WHERE ").append(WhereBuilder.b(id.getColumnName(), "=", idValue));
result.setSql(sqlBuffer.toString());
return result;
}