最近接到个挺有意思的需求,做用户观看学习视频时长的一个数据埋点
储存用户观看视频时长、记录的接口的调用肯定会特别频繁,因为每间隔指定时间每个用户都会调感谢卡内容用,如果在这个接口里直接操作数据库将会给我们的数据库带来一定的压力,在我的代码中是不允许的,而我是这样完成这个需求的:
首先将用户观看视频的时长、记录存储到阿里云的日志库里,随后以定时器从阿里云的日志库中拉取用户观看视频的数据同步到我们的数据库中。
而就是最后这一步,同步数据到数据库中,这里的数据量肯定是庞大的,所以我做了分表。
但是尽管做了分表数据量也不少,如果通过自增的主键id去编辑数据那么我在更新数据之前都要先从数据库中查询一次,然后在更新
在数据量大的情况下依然会给我们数据库造成不少压思想教育心得体会力,且这个定时器的执行时长将会拉大,这是我不能接受的
所以直接使用复合主键,以视频id+用户id去批量更新数据,这样就会快很多,然而mybatisplus却仅支持单一主键操作,这就让我刚屡清楚的思路陷入了僵局
不过还是让我找到了支持复合主键的框架
是不是看起来挺离谱的?啥玩意就plus-plus?别急,让我们来看看代码先
注意mybatisplus与mybatisplus-plus的版本兼容性
首先引入jar包
po对象
@mppmultiid 注解即声明为复合主键,并以@tablefield 主键 声明表字段
rvice接口
impl类
mapper接口
rvice 继承 impprvice ,mapper 继承 mppbamapper,impl 继承 mpprviceimpl 实现 rvice
并在启动类上添加 @enablempp 注解
随后直接在测试用例中运行(测试用例中未使用分表):
我在save 方法后每个方法出都打了断点,下面我们来看看运行结果
可以看到,添加方法打印的sql与mybatisplus并没有什么区别,随后看一下数据库中的数据
是正常的,我们来看一下查询操作
可以看到,这里的where条件后跟的是两个查询条件,是不是很棒。再看看编辑操作
可以到编辑操作的sql也是已两个条件操作的,数据也更新过来了,最后删除操作:
至此支持复合组件的crud就完成了
而 mybatisplus-plus 作为 mybatisplus 的升级版 新颖的功能肯定不止于此
根据多个字段联合主键增删改查
原生mybatisplus只支持一个主键,
mpp支持多个字段联合主键(复合主键)增删改查,
mapper需要继承mppbamapper
实体类中联合主键的字段需要用@mppmultiid注解修饰
如果需要在rvice使用多主键相关操臭氧层的作用作包括saveorupdatebymultiid和批量操作updatebatchbymultiid和saveorupdatebatchbymultiid,可以直接继承impprvice接口
优化分页插件实现在不分页时进行排序操作
原生mybatisplus分页与排序是绑定的,mpp优化了分页插件,使用mpppaginationinterceptor插件
在不分页的情况下支持排序操作
page参数size设置为-1可实现不分页取全量数据,同时设置orderitem可以实现排序自动填充优化功能 & 自动扫描entity类构建resultmap功能
原生mybatisplus只能做%s+1和now两种填充,mybatisplus-plus在插入或更新时对指定字段进行自定义复杂sql填充。
需要在实体类字段上用原生注解@tablefield设置fill=fieldfill.inrt fill=fieldfill.update或fill=fieldfill.inrt_update否则不会触发自定义填充
mybatisplus-plus使用@inrtfill注解触发插入时,执行注解中自定义的sql填充实体类字段
mybatisplus-pl社稷次之us使用@updatefill注解触发更新时,执行注解中自定义的sql填充实体类字段
还可以自动填充主键字段,解决适合失恋听的歌原生mybatisplus不支持多个主键的问题
使用colnameutil.pn静态方法,获取实体类中读取方法对应的列名称
mybatisplus-plus更多详细用法【码云仓库地址】
到此这篇关于mybatisplus复合主键(多主键)crud的文章就介绍到这了,更多相关mybatisplus复合主键内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-06 01:52:02,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c37e7dfbcbcf551287d42c076686c2e0.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:mybatisplus 复合主键(多主键) CRUD示例详解.doc
本文 PDF 下载地址:mybatisplus 复合主键(多主键) CRUD示例详解.pdf
留言与评论(共有 0 条评论) |