博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis操作mysql的奇淫技巧总结(代码库)
阅读量:6463 次
发布时间:2019-06-23

本文共 2890 字,大约阅读时间需要 9 分钟。

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
gaokao = #{gaokao},
contest = #{contest},
independent = #{independent},
WHERE id = #{id}

  

3、批量动态更新

在2 的基础上添加<trim> 和<foreach>标签 

UPDATE course
when id=#{item.id} then #{item.rateState}
when id=#{item.id} then #{item.name}
WHERE
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)

 

原创文章,欢迎转载,转载请注明出处!

 

你可能感兴趣的文章
puppet来管理文件和软件包
查看>>
Python基础进阶之路(一)之运算符和输入输出
查看>>
阻塞非阻塞异步同步 io的关系
查看>>
ClickStat业务
查看>>
DMA32映射问题
查看>>
Android内存泄露之开篇
查看>>
提高效率—编程中的技巧
查看>>
导出excel——弹出框
查看>>
高并发程序设计
查看>>
ExtJs之组件(window)
查看>>
SoapUI中如何传递cookie
查看>>
静态成员变量的初始化
查看>>
POJ 1269 Intersecting Lines(判断两直线位置关系)
查看>>
MSSQL数据库跨表和跨数据库查询方法简(转)
查看>>
spring3.0.7中各个jar包的作用总结
查看>>
Windows 10 /win10 上使用GIT慢的问题,或者命令行反应慢的问题
查看>>
SSM——查询_分页
查看>>
梯度下降(Gradient descent)
查看>>
Windows平台分布式架构实践 - 负载均衡
查看>>
如何让LinearLayout也有类似Button的点击效果?
查看>>