我试图使用单个查询插入到4个表中 mybatis,但不幸的是,当这样做时出错,请帮助我 进行。
<insert id="insert" parameterType="com.technoshinelabs.eduskill.bean.Course" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
START TRANSACTION;
INSERT INTO course (course_name, training_provider, type_of_course, training_duration, number_of_license, type_of_users, about_course,
who_can_attend, certificate, training_type, course_image,created_date,updated_date)
VALUES (#{courseName}, #{trainingProvider}, #{typeOfCourse}, #{trainingDuation}, #{numberOfLicense}, #{typeOfUsers},
#{aboutCourse}, #{whoCanAttend}, #{certificate}, #{trainingType}, #{courseImagePath}, now(), now());
INSERT INTO assignment_material (course_id, file_name)
VALUES (#{courseId},
<foreach item="Course" collection="assignmentMaterialPath">#{Course}</foreach>);
INSERT INTO trainer_image (course_id, file_name)
VALUES (#{courseId},
<foreach item="Course" collection="trainerImagePath">#{Course}</foreach>);
INSERT INTO trainer_provider_logo (course_id, file_name)
VALUES (#{courseId},
<foreach item="Course" collection="trainingProviderPath">#{Course}</foreach>);
COMMIT;
</insert>
如果我尝试执行此操作,我会发生意外错误 (type = Internal Server Error,status = 500)。
更新数据库时出错。原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个
SQL语法中的错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在&#39; INSERT INTO附近使用正确的语法 课程(course_name,training_provider,type_of_course,training_dur&#39; 在第2行###错误可能涉及 com.technoshinelabs.eduskill.mapper.CourseMapper.insert-Inline ### The 设置参数时发生错误### SQL:START TRANSACTION; INSERT INTO课程(course_name,training_provider,type_of_course, training_duration,number_of_license,type_of_users,about_course, who_can_attend,certificate,training_type, course_image,created_date,updated_date)VALUES(?,?,?,?,?,?,?, ?,?,?,?,now(),now()); INSERT INTO assignment_material(course_id, file_name)VALUES(?,???); INSERT INTO trainer_image(course_id, file_name)VALUES(?,???); INSERT INTO trainer_provider_logo (course_id,file_name)VALUES(?,???);承诺; ###原因: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在&#39; INSERT INTO附近使用正确的语法 课程(course_name,training_provider,type_of_course,training_dur&#39; 第2行;糟糕的SQL语法[];嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在&#39; INSERT INTO附近使用正确的语法 课程(course_name,training_provider,type_of_course,training_dur&#39; 在第2行
错误。
答案 0 :(得分:0)
删除START TRANSACTION;
和COMMIT;
,它们不得成为查询的一部分。
4个插入将在一个语句中执行。但交易必须由应用程序或容器管理。
交易实际上是在会话开始时开始的。