首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring JDBC模板条件插入

Spring JDBC模板条件插入
EN

Stack Overflow用户
提问于 2010-11-08 11:42:57
回答 2查看 2.4K关注 0票数 0

我正在尝试编写一个基于Java参数的条件批插入,例如

代码语言:javascript
运行
复制
List<Object[]> params = new ArrayList();
params.add(new Object[]{1, 2, 3});

getSimpleJdbcTemplate.batchUpdate(
"INSERT INTO SomeTable( colA, colB, colC)" +
 " VALUES(?, ?, ?)" +
 " WHERE EXISTS ( // some condition )", params);

这显然不起作用,我找到的最接近的例子是从表中选择插入值,而不是列表参数,这是我需要的。如何引用Object[]参数作为插入值的一部分?

谢谢。

EN

Stack Overflow用户

发布于 2010-11-08 15:27:15

作为示例,您应该尝试以下语法和SimpleJdbcOperations.update方法:

代码语言:javascript
运行
复制
getSimpleJdbcTemplate.update(
    " INSERT INTO SomeTable( colA, colB, colC)" +
    " SELECT srcA, srcB, srcC" +
    " FROM src_table" +
    " WHERE EXISTS ( // some condition )",
    params
);

此外,我一直在使用StringTemplate生成动态SQL。这是我用过的最好的语言。

例如(作为StringTemplate语法):

代码语言:javascript
运行
复制
StringTemplate tmpl = new StringTemplate(
    " SELECT *" +
    " FROM some_table" +
    " WHERE 1 = 1" +
    "$search_age:{ AND age = ?}$" +
    "$search_name:{ AND name = ?}$"
);


/**
 * if param_age is not null, "AND age = ?" would be included in argumented sql,
 * same as param_name
 */
tmpl.setAttribute("age", param_age);
tmpl.setAttribute("name", param_name);
// :~)

String sqlTmpl = tmpl.toString(); // final SQL generated
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4121091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档