mybatis动态创建表

想喝咖啡的貓 2013-09-27 12:20:38
亲们,如何用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


无语。。。现在用的触发器。。。。
...全文
10899 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2013-09-27
  • 打赏
  • 举报
回复
引用 4 楼 AFer198215 的回复:
我发现我问了一个愚蠢的问题。 再问一个,怎么在insert/update里执行多条insert/update语句? 语句是写死的,只是到时间 要执行一次,比如定时删除多个表的过期记录。
那你要把语句存到一个集合里面 ibatis不是有<iterate></iterate>迭代标签吗这个迭代标签用它迭代就变成多句了
tony4geek 2013-09-27
  • 打赏
  • 举报
回复
好像不可以把。只能多次调用了。
想喝咖啡的貓 2013-09-27
  • 打赏
  • 举报
回复
我发现我问了一个愚蠢的问题。 再问一个,怎么在insert/update里执行多条insert/update语句? 语句是写死的,只是到时间 要执行一次,比如定时删除多个表的过期记录。
suciver 2013-09-27
  • 打赏
  • 举报
回复
用${}保证原样输出
forgetsam 2013-09-27
  • 打赏
  • 举报
回复
你不知道ibatis还给了一个${}吗?
想喝咖啡的貓 2013-09-27
  • 打赏
  • 举报
回复
up up up up up

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧