赞
踩
收获大佬封装的一个jar包,可以支持MyBatis-Plus多表联查,特此分享。
注意: 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。