mybatis动态创建表
亲们,如何用mybatis动态创建表?先是这样:
/**
*创建临时表
*@param sql
*/
void createTmpTable(String sql);
<update id="createTmpTable" parameterType="string">
#{sql}
</update>
结果:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''create table tmp_test3(name varchar(50),value varchar(50))ENGINE=MEMORY DEFAULT' at line 1
mybatis把这条sql转成一条字符串了。。。
然后....
/**
*创建临时表
*@param tName
*/
void createTmpTable(String tName);
<update id="createTmpTable" parameterType="string">
create table #{tName}
(name varchar(50),value varchar(50)) ENGINE=MEMORY DEFAULT CHARSET=utf8
</update>
结果:
### Error updating database. Cause: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''tmp_test3'
(name varchar(50),value varchar(50)) ENGINE=MEMORY DEFAULT CHARS' at line 1
再然后。。。。
<update id="createTmpTable" parameterType="string">
create table `#{tName}`
(name varchar(50),value varchar(50)) ENGINE=MEMORY DEFAULT CHARSET=utf8
</update>
结果:
### SQL: create table `?` (name varchar(50),value varchar(50)) ENGINE=MEMORY DEFAULT CHARSET=utf8
无语。。。现在用的触发器。。。。 --------------------编程问答-------------------- up up up up up --------------------编程问答-------------------- 你不知道ibatis还给了一个${}吗? --------------------编程问答-------------------- 用${}保证原样输出 --------------------编程问答--------------------
我发现我问了一个愚蠢的问题。
再问一个,怎么在insert/update里执行多条insert/update语句?
语句是写死的,只是到时间 要执行一次,比如定时删除多个表的过期记录。 --------------------编程问答-------------------- 好像不可以把。只能多次调用了。 --------------------编程问答--------------------
那你要把语句存到一个集合里面
ibatis不是有<iterate></iterate>迭代标签吗这个迭代标签用它迭代就变成多句了
补充:Java , Java EE