一、引依赖
注意: mybatis plus version >= 3.4.0
<dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join</artifactId> <version>1.2.4</version> </dependency>
二、使用方法
mapper继承MPJBaseMapper (必选)
service继承MPJBaseService (可选)
serviceImpl继承MPJBaseServiceImpl (可选)
三、(实战)多表查询
MPJLambdaWrapper<Map> mpjLambdaWrapper = new MPJLambdaWrapper(); mpjLambdaWrapper.select(ChatRecord::getId,ChatRecord::getRedMoney) .select(OfShopMembers::getUsablePoint) .select(ChatMultiList::getName) .leftJoin(OfShopMembers.class,OfShopMembers::getId,ChatRecord::getId) .leftJoin(ChatMultiList.class,ChatMultiList::getId,ChatRecord::getMultiId) .eq(ChatRecord::getMemberId,3213); List list = chatRecordMybatisJoinMapper.selectJoinList(Map.class, mpjLambdaWrapper);
对应查询语句
SELECT
t.id,
t.red_money,
t1.username,
t2.name
FROM
chat_record t
LEFT JOIN of_shop_members t1 ON (t1.id = t.id)
LEFT JOIN chat_multi_list t2 ON (t2.id = t.multi_id)
WHERE
(t.member_id = 3213)
参数说明
1、select:表示查询的指定字段,一个select只能查一个表的
2、leftJoin:
第一个参数: 参与连表的实体类class
第二个参数: 连表的ON字段,这个属性必须是第一个参数实体类的属性
第三个参数: 参与连表的ON的另一个实体类属性
3、默认主表别名是t,其他的表别名以先后调用的顺序使用t1,t2,t3…
四、(实战)多表分页查询
MPJLambdaWrapper<Map> mpjLambdaWrapper = new MPJLambdaWrapper(); mpjLambdaWrapper.select(ChatRecord::getId,ChatRecord::getRedMoney) .select(OfShopMembers::getUsablePoint) .select(ChatMultiList::getName) .leftJoin(OfShopMembers.class,OfShopMembers::getId,ChatRecord::getId) .leftJoin(ChatMultiList.class,ChatMultiList::getId,ChatRecord::getMultiId) .eq(ChatRecord::getMemberId,3213) .orderByDesc(ChatRecord::getAddTime); Page page = new Page(1,2); IPage<Map> mapIPage = chatRecordMybatisJoinMapper.selectJoinPage(page, Map.class, mpjLambdaWrapper);
对应查询语句
SELECT
t.id,
t.red_money,
t1.usable_point,
t2.name
FROM
chat_record t
LEFT JOIN of_shop_members t1 ON (t1.id = t.id)
LEFT JOIN chat_multi_list t2 ON (t2.id = t.multi_id)
WHERE
(t.member_id = 3213)
ORDER BY
t.add_time
DESC
LIMIT 2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!