亲们,如何用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
无语。。。现在用的触发器。。。。