2017-09-06 6 views
0
<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> 

이상은 내 코드 단편입니다. 이 삽입 메소드를 호출하면 오류가 발생합니다. 내 질문 : 1) mybatis가 이러한 문법을 ​​지원합니까? 한 가지 방법으로 여러 SQL을 사용할 수 있습니까? 2) 지원하지 않는 경우이 케이스 처리 방법.mybatis mapper xml 하나의 매퍼 메서드에서 여러 SQL 문 실행

+0

한 번에 여러 개의 sql 문을 실행하는 [MyBatis]가 중복 될 수 있습니까?] (https://stackoverflow.com/questions/7174225/mybatis-executing-multiple-sql-statements-in-one-go- 그게 가능하다) –

답변

0

1 실제로 JDBC가 지원하고 DB를 사용하면 Mybatis와 관련이 있습니다 (드라이버는 물론). 그렇다면 Mybatis에서 그렇게 할 수 있습니다. Gabriele Coletta으로 알 수 있듯이 MyBatis executing multiple sql statements in one go, is that possible? 질문에 대한 대답이 포함되어 있습니다.

당신이 볼 수 있듯이

이 구문은 이후 대답 1 /이 '예'목적없이 데이터베이스 유형 (MySQL은, MS-SQL, 오라클)

2 /에서 다르다.