MyBatis-Plus实现多表联查

MyBatis-Plus多表联查写法

  • 前言
    • 一、引依赖
    • 二、使用方法
    • 三、(实战)多表查询
      • 参数说明
    • 四、(实战)多表分页查询

前言

收获大佬封装的一个jar包,可以支持MyBatis-Plus多表联查,特此分享。

一、引依赖

注意: mybatis plus version >= 3.4.0

    com.github.yulichang
    mybatis-plus-join
    1.2.4

二、使用方法

mapper继承MPJBaseMapper (必选)

service继承MPJBaseService (可选)

serviceImpl继承MPJBaseServiceImpl (可选)

三、(实战)多表查询

MPJLambdaWrapper 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 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 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

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/d45c403486.html