时间:2021-05-20
在项目开发中,难免会遇到连表查询的操作。
项目中用的是 MyBatis-Plus,是新使用的框架。官方文档看这里。
我写过一篇通过单元测试来验证 MyBatis-Plus 的 CRUD 操作。点这里跳转
今天遇到连表查询的问题,特此记录一下。
遇到需要连表操作,想起 MyBatis 的操作连表查询,要是 MyBatis-Plus 也像 MyBatis 一样,就脑壳痛了。(MyBatis-Plus 是 MyBatis 的增强版)
脑壳痛归脑壳痛,先动手干。
首先
因为官方的内置接口方法都是针对单表的,所以要连表的话,还是得中规中矩来。
运行结果出来发现,select 语句中的字段都封装成 Object,存到 List 集合中去了,不过有一点就是如果字段的值是 null 的,就不会封到 Object 里。
有点小开心
回顾一下我上次在 MyBatis 的连表方式,首先我在主表的实体类中把需要连表的实体类加进去了。
然后在 mapper.xml 添加了 association 标签,用来配置关联关系的。
然后
我发现可以封装 Object,那我想是不是就可以自定义一个 VO 来封装成一个实体类。
然后很开心运行了 test3,想着结果应该没问题的了,结果报错了,报了个转换异常,不能转换成 WxTsxxVo 对象。
不对啊,Object 都没有报错,我定义了个 WxTsxxVo 实体就报错了?
后来想想应该是查询出来的结果不认识我这个 WxTsxxVo,网上搜了一下「连表查询封装进自定义实体类」,看到有个解决方案是 添加association标签,还有另外一个解决方案是在 mapper.xml 中写一个对应的 resultMap
所以我选择尝试第二种方案。
运行成功
再次运行,这次就成功了。查询出来的每条结果都封装成 WxTsxxVo,然后在放到 List 集合里面。
总结
1.新框架需要多点尝试,所以写测试用例就很重要了。
2.MyBatis 也许也能像上面一样,并不需要在主表的实体类里面关联另外一个实体,不过有机会还是可以试试看的。
到此这篇关于MyBatis-Plus 如何实现连表查询的示例代码的文章就介绍到这了,更多相关MyBatis-Plus 连表查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、使用mybatis-plus自身的查询构造去,只需要在全局配置中添加如下配置mybatis-plus:mapper-locations:classpath:
Mybatis-Plus的配置1.Maven插件velocity-engine-core是mybatis-plus自动生成代码所依赖的模板(不用自动生成代码功能
已有的springcloud+mybatis项目升级为mybatis-plus项目模块目录将mybatis依赖替换为mybatis-plus修改配置文件实体类如
mybatis-plus版本不兼容问题1,mybatis-plus版本中存在一个问题。2,mybatis-plus-extension版本为v3.2.1.1-S
搭建MyBatis-Plus框架并进行数据库添加MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为