java生成sql语句_java生成SQL语句

代码如下:

/** * 动态生成SQ及SQL参数L

* @param ve 接收到的消息的CHGLIST

* @param paramList MQ消息中的SQL参数

* @param t 泛型对象

* @param table 数据表

* @param list 可执行SQL语句集合

* @return */public String updateSqlAndParamList(Vector ve,List paramList,T t,String table,List list){

String strSql="";//MQ消息SQlString upSql="";//可执行SQLtry {//组装SQL语句strSql = "update "+table+" set ";

upSql="update "+table+" set ";for(int i = 0; i < ve.size(); i++){

String str = "";

String upStr="";

String key = ve.get(i);

String fileName="get"+key.toUpperCase();

String value=(String)t.getClass().getMethod(fileName).invoke(t);

paramList.add(i,value);if(i == ve.size()-1){

str = key+" = ?";

upStr=key+"='"+value+"'";

}else{

str = key+" = ? ,";

upStr=key+"='"+value+"',";

}

strSql+=str;

upSql += upStr;

}

strSql +=" where Id = ? ";

upSql+=" where id='"+(String) t.getClass().getMethod("getID").invoke(t)+"'";

list.add(upSql);

paramList.add(ve.size(),(String) t.getClass().getMethod("getID").invoke(t));

} catch (Exception e) {

logger.info("组装UPDATE SQL失败!失败详情---"+e);

}return strSql;

}

1.使用动态语句

很多数据库都提供了处理动态SQL的语法,如Oracle的EXECUTE IMMEDIATE语句、MSSQL的EXEC和SP_EXECUTESQL、Mysql的预处理语句等。这些功能让我们在数据库端来处理动态查询提供了极大遍历,但这种方式只适用于相对简单地动态查询,复杂的情况经常会采用下面的方式。

2、使用存储过程

对于复杂的情况,一般会在存储过程中来拼接动态SQL。使用存储过程完成相对灵活,但编码复杂度过高,有时运行效率较低。

3、使用其他(如JAVA)程序

使用外部的其他高级语言(如JAVA)拼接后再交由数据库执行也是一种选择,其灵活性较高,但由于JAVA缺乏对集合计算的支持,完成这些准备工作并不轻松。

如果需要执行动态SQL的主控程序是JAVA的,那么可以使用集算器来协助完成动态SQL类计算,集算器是动态解释执行的脚本,可以方便地拼出动态SQL执行。集算器提供了JDBC接口,可以置于Java应用程序与数据库之间,让应用程序继续象访问数据库一样执行集算器脚本,应用结构几乎不用改变。

下面通过例子来说明如何使用集算器完成动态SQL类计算,并集成进JAVA程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值