3

我的项目是一个数据库中心,类似于 PLSQL,但在 Web 浏览器中使用。有时候我需要创建或者修改一个表,但是我不知道Mybatis是否支持DDL,我也没有找到任何关于这个的文档。

4

2 回答 2

5

大多数情况下,DDL 的工作方式与使用 mybatis 的 DML 类似。一个区别是您需要使用 ${} 而不是 #{} 作为参数。大多数数据库不支持使用 DDL 的预处理语句。$ 表示法是字符串替换,而不是预准备语句的参数。

<update id="exchangePartition" parameterType="java.util.Map">
    alter table ${destinationTableName} 
    exchange partition ${destinationPartitionName} 
    with table ${sourceTableName} 
    including indexes 
    with validation
</update>

了解具有可调用存储过程的语句类型的调用语法也很有帮助。

<update id="gatherStatistics" statementType="CALLABLE" parameterType="Map">
    {call 
        dbms_stats.gather_table_stats(
            ownname => #{tableOwner}, 
            tabname => #{tableName}
            <if test="partitionName != null">
                , partname => #{partitionName}
            </if> 
           )
    }
</update>
于 2013-09-17T12:04:55.920 回答
1

MyBatis 支持任何原生 SQL/PlSql 命令。所以是的,它支持 DDL 语句。

于 2013-09-16T11:46:18.600 回答