MyBatis-Plus 查询返回实体对象还是map
在常见场景下:返回数据建议使用map,不建议使用实体对象
/** *1.名字包含雨并且年龄小于40 *sql:namelike'%雨%'andage<40 **应用场景: *当表字段非常多,但是你只需要查询少数几列, *没必要返回的泛型为实体的list,如果返回的泛型为实体,绝大多字段都是null,这样做不优雅 *用返回泛型为map建议使用 */ @Test publicvoidselectByWrapperMaps(){ QueryWrapper
queryWrapper=newQueryWrapper<>(); queryWrapper.like("name","雨").lt("age",40); //建议使用 List
/** *按照直属上级分组,查询每组的平均年龄。最大年龄、最小年龄。 *并且只取年龄总和小于500的组 *selectavg(age)avg_age,min(age)min_age,max(age)max_agefromuser *groupbymanager_id *havingsum(age)<500; */ @Test publicvoidselectByWrapperMaps2(){ QueryWrapperqueryWrapper=newQueryWrapper<>(); queryWrapper.select("avg(age)avg_age","min(age)min_age","max(age)max_age") .groupBy("manager_id") .having("sum(age)<{0}",500); List
遇到了这个问题,迷惘,遂问大神,大神曰:如果是组合体,就用map;如果是单体实体,就用实体。实体类对应单表,多表返回用map。
我想省事全用map,但是那我学了面向对象是用来干嘛的?
别人在调用你这个接口的时候,如果返回类型是个map,那他需要点进去,看你程序的具体实现才能知道怎么接收,赋值,那无疑是为别人添加了巨大麻烦,尤其是当你的代码不够规范的时候。再有,如果你代码写的很烂,岂不是自己去让别人吐槽你。如果你返回的是一个对象实体,那他就可以看到你返回的是什么,别人也就懒得再去看你代码了,也为他省了很多事。
新技术或者新思想并不等于省事,很多时候有捷径,但是,我们就是不能去走,为什么?说不定走到哪里就会遇到一个坑,或者直接是悬崖也不一定。
其他回答:
1.每张表都要对应一个实体这样才能映射嘛多表联合查询的结果可以返回一个hashmap处理视情况而定。
2.如果你是多表联合查询,然后你又觉得返回方式用map很麻烦的话,你可以自己建立个实体类,这个实力类中包含有你所要查询的多表中的字段,然后在mybatis中用typeAlias指定一下,到时候,就能像用一般的实体类那样使用就好。
3.如果类型指定为hashMap只是针对返回一条记录的情况吧,如果返回多条记录类型就不能指定为hashMap了?多个结果集他会给你放入一个List,你在javacode中用selectList这样的代码返回的是list,当然这个list中可能是实体类也可能是hashmap。
到此这篇关于MyBatis-Plus查询返回实体对象还是map的文章就介绍到这了,更多相关MyBatis-Plus查询返回内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。