MyBatis java和MySql局部变量

时间:2011-02-28 15:38:35

标签: java mysql jdbc ibatis mybatis

我是java世界的新手。我的简单查询有问题:

<insert id="create" parameterType="models.entities.CategoryEntity">

    set @catId := (select categoryId from Categories limit 1);
     insert into Categories(CategoryId, Title, LeftValue, RightValue)
    values(@catId, 'Test in', 1,2);
   ....
</insert>

当我尝试使用mybatis运行它时,它会失败:

PersistenceException occured : ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into Categories(CategoryId, Title, LeftValue, RightValue) values(' at line 2 ### The error may involve Category.create-Inline ### The error occurred while setting parameters ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into Categories(CategoryId, Title, LeftValue, RightValue) values(' at line 2

如果我删除此行:

set @catId := (select categoryId from Categories limit 1);

然后一切都好。我究竟做错了什么?是jdbc还是mybatis有问题?如何在mybatis中使用mysql @variables?有人有mybatis使用MySql局部变量的例子吗?

1 个答案:

答案 0 :(得分:4)

我发现了如何让它发挥作用。只需设置datasource属性allowMultiQueries = true

jdbc:mysql://localhost:3306/DBS?allowMultiQueries=true