
public class Test
{

/** *//**
* Test Method
*/

private void service()
{

String param[] =
{
"name", "id"
};

Object values[] =
{
"minli", 1
};

update("Customer", param, values);
}


/** *//**
* 更新 (該方法目前只針對(duì)一個(gè)查詢參數(shù),至于多參數(shù)的可以在此基礎(chǔ)上更改,思路則不變)
* @params 為要更新實(shí)體當(dāng)中的屬性,其中最后一個(gè)為查詢參數(shù)
*/

private void update(String entity, String[] params, Object[] values)
{
if (params == null || values == null)
throw new NullPointerException("param is null!");

if (params.length < 2 || values.length < 2)
throw new IllegalArgumentException("param is wrong");

if (params.length != values.length)
throw new IllegalArgumentException("param is wrong");

String updateHQL = updateSQL(entity, params, values);

//這個(gè)地方可以使用query來(lái)進(jìn)行遍歷數(shù)組來(lái)賦值
System.out.println(updateHQL);
}


/** *//**
* 生成Update HQL語(yǔ)句
*/

private String updateSQL(String entity, String[] params, Object[] values)
{
String entityName = entity.toLowerCase();

String baseHQL = "update " + entity + " " + entityName + " set ";


for (int i = 0; i < params.length - 1; i++)
{
String param = params[i];

baseHQL += entityName + "." + param + "=:" + param;

if (i < params.length - 2)
baseHQL += ",";
}
String param = params[params.length - 1];

baseHQL += " where " + entityName + "." + param + "=:" + param;

return baseHQL;
}


public static void main(String[] args)
{
new Test().service();
}
}
