일괄적으로 삽입할 때는 삽입된 데이터의 ID를 가져와야 합니다.
이렇게:
<insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES (#{userName})</insert>
이것은 문제가 되지 않습니다.
하지만 때로는 일괄 삽입하고 삽입된 ID를 가져와야 하는 경우도 있습니다
이렇게 작성하세요:
<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>
이렇게 실행하면 예외가 발생합니다.
사용 중인 mybatis 버전이 너무 낮기 때문입니다. 예를 들어 저는 mybatis의 버그인 3.2.2 버전을 사용하고 있습니다. .
버전 3.4.4로 변경하면 문제 없습니다.
위의 SQL 문을 다르게 작성하면 예외가 다시 보고됩니다(foreach에 삽입 포함)
예:
<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user` (userName) VALUES (#{item.userName}) </foreach></insert>
마찬가지로 업데이트 일괄 업데이트도 있습니다.
<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set userName=#{item.userName} where userId=#{item.userId}</foreach></update>
이는 mybatis가 기본적으로 하나의 SQL 문만 실행할 수 있기 때문입니다.
여러 SQL 문을 실행하기 위해 경로를 연결할 때 매개변수를 추가할 수 있습니다.
위 내용은 마이베이츠 배치 인서트 작동 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!