MyBatis之使用JSONObject代替JavaBean优雅返回多表查询结果

项目中需要返回多个表的查询结果,比如user表中的用户信息和user个人的所在班的班级信息。目前我们有user实体类和class实体类。一般情况下如果是单表查询,比如查询user信息,那么查询的返回值就是一个user对象或一个user对象列表。但是像这种情况涉及两个表的话,查询结果的返回值该是什么呢?

解决办法:
1.user表的属性里添加一个class的属性。
2.新建一个类SserClass,包含user类和class类的内容。
3.使用JSONObject!

第一种办法需要修改user类的内容,如果是别人定义的类,那最好就不要改了,即使是自己写的但是改代码也不倡议。
第二种办法不需要改代码,但是需要新建一个类,本来一个表对应一个类,现在平白多了一个类,属实不美观。
第三种办法就比较好用了!

只需要改返回值就好了!以下是我某一项目的代码,原先是单表查询返回一个Quality类,现在变成多表查询了,只需要修改返回值和sql语句的返回值即可!
controller层:
在这里插入图片描述
service层:
在这里插入图片描述
mapper层:
在这里插入图片描述xml文件里的sql语句:
在这里插入图片描述
这里需要注意使用resultType而不是resultMap
否则会报:Result Maps collection does not contain value for com.alibaba.fastjson.JSONObject

参考:前端 MyBatis 中使用 JSONObject 替代 JavaBean

猜你喜欢

转载自blog.csdn.net/qq_39286701/article/details/120876067