【Mybatis-plus-join】 多对多查询映射
【Mybatis-plus-join】 多对多查询映射
Metadata
title: 【Mybatis-plus-join】 多对多查询映射
date: 2023-01-22 19:36
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/Mybatis-plus-join
categories:
- Mybatis-plus-join
keywords:
- Mybatis-plus-join
description: 【Mybatis-plus-join】 多对多查询映射
【Mybatis-plus-join】 多对多查询映射
JoinLambdaWrapper<UsersAge> wrapper = joinLambdaQueryWrapper(UsersAge.class);
wrapper.leftJoin(Users.class, Users::getAgeId, UsersAge::getId)
// manyToManySelect 多对多,对应的就是 mybatis中的resultMap中的collection标签
// 该方法第一个参数代表的是需要映射到的实体类字段
// 第二个参数代表list中的实体类型 例如 List<Users> 这里的实体类型就是Users
// 第三个就是要查询的字段
.manyToManySelect(UsersAgesVo::getUsersList, Users.class, (cb) -> {
// 在1.3.2版本后 属性名和映射vo的属性名相同的情况下,可以不必写别名,就可以完成自动映射
cb.add(Users::getUserName, Users::getUserId, Users::getCreateTime);
})
// 1.3.3版本之后可以 这样子查询这个类的所有查询字段并赋值到集合对象中
.manyToManySelect(UsersAgesVo::getUsersList,Users.class)
.end();
return super.joinList(wrapper, UsersAgesVo.class);
sql
SELECT
users_age.age_doc,users_age.age_name,users_age.id,users.user_name,users.user_id,users.create_time
FROM users_age AS users_age
LEFT JOIN users AS users ON users.age_id = users_age.id;
返回数据
[
{"ageDoc":"90","ageName":"90","id":1,
"usersList":[
{"createTime":1635416270000,"userId":1,"userName":"名字啊"},
{"createTime":1635416270000,"userId":2,"userName":"名字2"}
]
}
]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论