当前位置:编程学习 > JAVA >>

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语句? 
语句是写死的,只是到时间 要执行一次,比如定时删除多个表的过期记录。 --------------------编程问答-------------------- 好像不可以把。只能多次调用了。 --------------------编程问答--------------------
引用 4 楼 AFer198215 的回复:

我发现我问了一个愚蠢的问题。

再问一个,怎么在insert/update里执行多条insert/update语句? 
语句是写死的,只是到时间 要执行一次,比如定时删除多个表的过期记录。

那你要把语句存到一个集合里面
ibatis不是有<iterate></iterate>迭代标签吗这个迭代标签用它迭代就变成多句了
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,