java - 我可以使用 iBatis 创建动态临时表吗?

标签 java mysql ibatis

在查询用户的联系人时,我想使用特定于该用户的临时表,例如tmp_contact_{userId},如果userId为123,应该解析为tmp_contact_123

我继承了一个使用iBatis与MySql数据库互操作的java项目。 我已经阅读了一些 iBatis 文档,并且在 xml 中看到可替换参数为#{userId} 或#userId#。前者似乎被解释为准备好的语句的参数并产生问号,例如'create temporary table tmp_contact_?',而后者保留为文字,例如'创建临时表 tmp_contact_#userId#'。 是否有替代语法来生成“创建临时表 tmp_contact_123”?

最佳答案

您需要在 .xml 文件中进行以下更改:

<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="xxx" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <statements>
    <select id="GetTempTableData" resultClass="Student" parameterClass="System.String">
        CREATE TABLE ##TEMPTABLE (ID int, Name varchar(20))
        INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (1, 'RAVI')
        INSERT INTO ##TEMPTABLE (ID, NAME) VALUES (2, 'KAPIL')
        SELECT * FROM ##TEMPTABLE
    </select>   
  </statements>
</sqlMap>

注意:您需要在选择语句中创建临时表。您需要使用双“##”在 IBATIS 中创建临时表。 “##”将替换为单个“#”,它将创建名为“#TEMPTABLE”的临时表。请记住它们是您需要搜索的临时表的一些限制。

希望对你有帮助

关于java - 我可以使用 iBatis 创建动态临时表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27846995/

相关文章:

mysql - 用于连接两个表的条​​件

java - 使用 HSQLDB (2.2.8) + DDLUtils 自动增量

mysql - 如何在 MyBatis 上使用 <if> 语句来使用更新语句

java - 如何从关系中删除子对象或父对象?

java - 我如何处理 Microsoft outlook winmail.dat?还有什么惊喜吗?

c# - 图分层布局算法

java - 如何通过 java 检索附件列表 JIRA rest api?

PHP插入带有特殊字符的MySQL表文本?

mysql - 表示 SQL 约束

java - ORA-01795 : maximum number of expressions in a list is 1000 error with myibatis