mybatis mapper xml在一个mapper方法中执行多个sql语句

时间:2017-09-06 09:49:36

标签: mybatis

<insert id="insert" parameterType="com.youneverwalkalone.cent.web.model.Category" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        LOCK TABLE t_category WRITE;

        UPDATE t_category SET rgt = rgt + 2 WHERE rgt greater than #{parentNode.lft,jdbcType=BIGINT};
        UPDATE t_category SET lft = lft + 2 WHERE lft greater than  #{parentNode.lft,jdbcType=BIGINT};

        insert into t_category (
        name, lft, rgt,
        time_created, people_created,
        state, type, project)
        values (
        #{record.name,jdbcType=VARCHAR}, #{parentNode.lft,jdbcType=BIGINT}+1, #{parentNode.lft,jdbcType=BIGINT}+2,
        #{record.timeCreated,jdbcType=TIMESTAMP}, #{record.peopleCreated,jdbcType=BIGINT},
        #{record.state,jdbcType=SMALLINT},#{record.type,jdbcType=VARCHAR},#{record.project,jdbcType=VARCHAR});

        UNLOCK TABLES;
    </insert>

以上是我的代码段。调用此insert方法将获得错误。 我的问题: 1)mybatis是否支持这些语法 - 在一种方法中使用多个sql? 2)如果不支持,如何处理这种情况。

1 个答案:

答案 0 :(得分:0)

1 /它实际上与Mybatis无关,如果JDBC支持它并使用DB(以及驱动程序)那么是的,你可以用Mybatis做到这一点。 正如Gabriele Coletta所注意到的那样,问题MyBatis executing multiple sql statements in one go, is that possible?包含答案。

正如您将看到的,不同数据库类型(mysql,ms-sql,oracle)的语法不同

2 /没有对象,因为答案为1 /是。