mybatisplus复合主键CRUD的示例分析


这篇文章主要介绍了mybatisplus复合主键CRUD的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近接到个挺有意思的需求,做用户观看学习视频时长的一个数据埋点储存用户观看视频时免费云主机域名长、记录的接口的调用肯定会特别频繁,因为每间隔指定时间每个用户都会调用,如果在这个接口里直接操作数据库将会给我们的数据库带来一定的压力,在我的代码中是不允许的,而我是这样完成这个需求的:首先将用户观看视频的时长、记录存储到阿里云的日志库里,随后以定时器从阿里云的日志库中拉取用户观看视频的数据同步到我们的数据库中。而就是最后这一步,同步数据到数据库中,这里的数据量肯定是庞大的,所以我做了分表。但是尽管做了分表数据量也不少,如果通过自增的主键id去编辑数据那么我在更新数据之前都要先从数据库中查询一次,然后在更新在数据量大的情况下依然会给我们数据库造成不少压力,且这个定时器的执行时长将会拉大,这是我不能接受的所以直接使用复合主键,以视频id+用户id去批量更新数据,这样就会快很多,然而mybatisplus却仅支持单一主键操作,这就让我刚屡清楚的思路陷入了僵局不过还是让我找到了支持复合主键的框架是不是看起来挺离谱的?啥玩意就plus-plus?别急,让我们来看看代码先
注意mybatisplus与mybatisplus-plus的版本兼容性首先引入jar包PO对象
*用户观看视频时长
*@MppMultiId 注解即声明为复合主键,并以@TableField 主键 声明表字段Service接口
*用户观看视频记录服务类
*Impl类
*用户观看视频记录服务类实现类
*Mapper接口
*用户观看视频记录Mapper接口
*service 继承 IMppService ,mapper 继承 MppBaseMapper,impl 继承 MppServiceImpl 实现 service并在启动类上添加 @EnableMPP 注解随后直接在测试用例中运行(测试用例中未使用分表):我在save 方法后每个方法出都打了断点,下面我们来看看运行结果可以看到,添加方法打印的SQL与mybatisplus并没有什么区别,随后看一下数据库中的数据是正常的,我们来看一下查询操作可以看到,这里的where条件后跟的是两个查询条件,是不是很棒。再看看编辑操作可以到编辑操作的SQL也是已两个条件操作的,数据也更新过来了,最后删除操作:至此支持复合组件的CRUD就完成了而 mybatisplus-plus 作为 mybatisplus 的升级版 新颖的功能肯定不止于此根据多个字段联合主键增删改查原生mybatisplus只支持一个主键,mpp支持多个字段联合主键(复合主键)增删改查,mapper需要继承MppBaseMapper
实体类中联合主键的字段需要用@MppMultiId注解修饰
如果需要在service使用多主键相关操作包括saveOrUpdateByMultiId和批量操作updateBatchByMultiId和saveOrUpdateBatchByMultiId,可以直接继承IMppService接口优化分页插件实现在不分页时进行排序操作原生mybatisplus分页与排序是绑定的,mpp优化了分页插件,使用MppPaginationInterceptor插件
在不分页的情况下支持排序操作
page参数size设置为-1可实现不分页取全量数据,同时设置OrderItem可以实现排序自动填充优化功能 & 自动扫描Entity类构建ResultMap功能原生mybatisplus只能做%s+1和now两种填充,mybatisplus-plus在插入或更新时对指定字段进行自定义复杂sql填充。
需要在实体类字段上用原生注解@TableField设置fill=FieldFill.INSERT fill=FieldFill.UPDATE或fill=FieldFill.INSERT_UPDATE否则不会触发自定义填充
mybatisplus-plus使用@InsertFill注解触发插入时,执行注解中自定义的sql填充实体类字段
mybatisplus-plus使用@UpdateFill注解触发更新时,执行注解中自定义的sql填充实体类字段
还可以自动填充主键字段,解决原生mybatisplus不支持多个主键的问题
使用ColNameUtil.pn静态方法,获取实体类中读取方法对应的列名称感谢你能够认真阅读完这篇文章,希望小编分享的“mybatisplus复合主键CRUD的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持百云主机,关注百云主机行业资讯频道,更多相关知识等着你来学习!

相关推荐: Css3中的transform怎么用

这篇文章主要介绍了Css3中的transform怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Css3中的transform怎么用文章都会有所收获,下面我们一起来看看吧。transform属性,最重量CSS3改变。让元素在2…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/09 09:50
下一篇 01/09 10:00

相关推荐