1、添加公共sql代码段
使用<sql> 和 <include> 标签
id, user_id, lesson_id, subassembly_id, record_id, course_id, teacher_id, status, create_time, update_time
2、动态更新
选择更新,为空则不更新,在<set> 标签里添加 <if> 标签,不需要考虑<if> 标签里的逗号
UPDATE school WHERE id = #{id} gaokao = #{gaokao}, contest = #{contest}, independent = #{independent},
3、批量动态更新
在2 的基础上添加<trim> 和<foreach>标签
UPDATE course WHERE when id=#{item.id} then #{item.rateState} when id=#{item.id} then #{item.name} id=#{item.id}
4、动态插入
选择插入,为空则不插入,在key 和value 两个部分都需要判断
INSERT INTO syllabus course_id, start_time, end_time, #{courseId}, #{startTime}, #{endTime}
5、批量插入
只在VALUES 部分循环
INSERT INTO timetable (user_id, user_type, lesson_id, lesson_time, watch_state, status) VALUES (#{item.userId}, #{item.userType}, #{item.lessonId}, #{item.lessonTime}, #{item.watchState}, #{item.status})
6、数据库根据主键自己选择插入还是更新,insertOrUpdate
相当于 jpa的 merge,关键在于唯一索引,也可以是主键,关键字:ON DUPLICATE KEY UPDATE
INSERT INTO timetable (user_id, user_type, lesson_id, lesson_time, watch_state, status) VALUES (#{userId}, #{userType}, #{lessonId}, #{lessonTime}, #{watchState}, #{status}) ON DUPLICATE KEY UPDATE lesson_time = #{lessonTime}, watch_state = #{watchState}, status = #{status}
7、批量insertOrUpdate
在5和6的基础上实现,注意 ON DUPLICATE KEY UPDATE 后面的 VALUES,是数据库的字段,而不是实体的字段, admin_name = VALUES(admin_name)
INSERT INTO stat_school_home (sid, name, admin_name, type_key, status) VALUES (#{item.sid}, #{item.name}, #{item.adminName}, #{item.typeKey}, #{item.status}) ON DUPLICATE KEY UPDATE name = VALUES(name), admin_name = VALUES(admin_name), type_key = VALUES(type_key), status = VALUES(status)
原创文章,欢迎转载,转载请注明出处!