Mybatis 支持 DDL 吗?

Posted

技术标签:

【中文标题】Mybatis 支持 DDL 吗?【英文标题】:Does Mybatis support DDL? 【发布时间】:2013-09-13 12:39:58 【问题描述】:

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

【问题讨论】:

【参考方案1】:

在大多数情况下,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>

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Mybatis 支持 DDL 吗?的主要内容,如果未能解决你的问题,请参考以下文章

mybatis支持oracle和mysql吗

mybatis中支持mysql中的变量吗?

MyBatis能脱离Spring吗

mybatis 支持属性使用驼峰的命名 返回map为啥不支持

tk.mybatis.mapper 实体类注解,支持ManyToOne吗?求示例

Mybatis一级缓存与二级缓存的区别你知道吗