如何创建&使用NamedParameterJdbcTemplate在mysql中删除表?

时间:2017-03-24 01:06:50

标签: java mysql spring jdbctemplate

我知道如何使用NamedParameterJdbcTemplate在mysql表中插入,更新和删除数据。但是如何创造&放桌?

1 个答案:

答案 0 :(得分:1)

您可以像执行DML语句一样创建表或删除表... SQL语句作为字符串传递给数据库引擎。

我怀疑你问的是,是否可以在SQL语句中提供标识符(例如table_name),方法是将其作为值用于执行预准备语句的绑定占位符。 e.g。

 CREATE TABLE ? (mycol INT) 

 CREATE TABLE :my_table_name (mycol INT)  

简短的回答是,它无法做到这一点。

语句中的标识符(例如表名)必须与SQL文本中一样。就像关键字SELECTFROM必须出现在SQL文本中一样,并且不能通过绑定占位符作为值提供。

我们可以在SELECT语句中演示限制,试图将表或视图的名称作为绑定占位符提供。这个位置?或命名占位符是否无关紧要。

这不起作用:

SELECT t.col c FROM ? t LIMIT 1

这不起作用:

SELECT 2 AS :col_alias FROM :v_table_name LIMIT 1  

如果您了解SQL优化器在准备和执行语句时执行的操作,则有关标识符的限制是有意义的。

此限制适用于SELECT语句。以及DML语句(INSERT,UPDATE,DELETE)和DDL语句(CREATE,ALTER,DROP)。

执行DDL语句的另一个潜在问题是导致隐式提交。我们需要注意在交易环境中正确处理。

如果需要执行动态DDL语句,为变量提供标识符,有两种基本方法:

1)动态地将SQL文本构造为字符串,以便表名(和其他标识符)是SQL文本的一部分,而不是绑定占位符。

2)创建一个将执行该语句的存储过程,并调用存储过程。存储过程的参数可以作为绑定占位符传递。