/**
* 注解形式返回id
* 使用 @Param后注意声明返回id teachers.id 埋坑 !!!
*/
@Insert("insert into teacher(name,teacher_info)values(#{teachers.name},#{teachers.teacherInfo})")
@Options(useGeneratedKeys = true , KeyProperty = "teachers.id" , keyColumn = "ID")
Boolean saveTeacher(@Param(value = "teachers") List<Teacher> teacher);
//分批插入可把返回的id传到mapper
void insertStudent(@Param("students") List<Student> student ,@Param("id") Integer id)
/**
* 从实体类里可以获取执行完返回主键id
* collection 对应 @Param(value = "teachers")
* item 当前获取的元素
* index 当前遍历次数
*/
<insert id="saveTeacher" parameterType="com.li.model.Teacher" useGeneratedKeys="true" keyProperty="id">
insert into teacher (`name`,`teacher_info`,`sid`)
values
<foreach collection="teachers" item="teacher" index="index" separator=",">
(
#{id}
#{teacher.name,jdbcType=VARCHAR},
#{teacher.teacherInfo,jdbcType=VARCHAR}
)
</foreach>
</insert>
/**
* 批量修改
*/
Boolean UpdateStudent (@Param(value = "students") List<Student> students);
/**
* 注意点: 因为此xml是循环执行sql语句本身
* 必须在数据库配置 allowMultiQueries=true 属性 ,否则报错!!!!!
* &allowMultiQueries=true放到最前边(添加后还报错可以尝试)
*/
<update id="UpdateStudent" parameterType="java.util.List">
<foreach collection="students" item="student" separator=";">
update
student
<set>
<if test="student.name != null">
name = #{student.name,jdbcType=VARCHAR},
</if>
<if test="student.studentInfo != null">
student_Info = #{student.studentInfo,jdbcType=VARCHAR}
</if>
</set>
where id = #{student.id,jdbcType=INTEGER}
</foreach>
</update>
<update id="updateIds" parameterType="java.util.List">
update student
set
student_Info = "全日制"
where id in
<foreach item="student" collection="students" open="(" separator="," close=")">
#{student.id}
</foreach>
</update>
<delete id="delDtudent">
delete from student
where id in
<foreach item="id" collection="list" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
mybatis 批量新增修改删除语法
最新推荐文章于 2025-05-27 23:42:29 发布