当前位置: 代码网 > it编程>编程语言>Java > MyBatisPlus中Join联表查询的项目实践

MyBatisPlus中Join联表查询的项目实践

2026年04月02日 Java 我要评论
mybatis-plus-join官网1:添加依赖<dependency> <groupid>com.github.yulichang</groupid>

mybatis-plus-join官网

1:添加依赖

<dependency>
    <groupid>com.github.yulichang</groupid>
    <artifactid>mybatis-plus-join-boot-starter</artifactid>
    <version>1.5.3</version>
</dependency>
<!-- 对于的mybaits-plus版本 -->
<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
    <version>3.5.9</version>
</dependency>

2:原来写法的mapper类,继承basemapper(其他全部不用修改)

@mapper
public interface usermapper extends basemapper<user> {
}

2-1:修改为的继承mpjbasemapper

@mapper
public interface usermapper extends mpjbasemapper<user> {
}

3:例子

mpjlambdawrapper<doorcontrollersettingsdoorinfodo> doorcontrollersettingsdoorinfodompjlambdawrapper = new mpjlambdawrapper<doorcontrollersettingsdoorinfodo>()
        .selectall()
        .leftjoin(doorcontrollersettingsdo.class, doorcontrollersettingsdo::getcontrollernumber, doorcontrollersettingsdo::getcontrollernumber);
doorcontrollersettingsmapper.selectjoinlist(doorcontrollersettingsdo2.class, doorcontrollersettingsdo2mpjlambdawrapper);

4:对于selectcollection和selectassociation的使用

4-1:user 实体类

@data
@tablename("user")
public class user {
    @tableid
    private long id;
    private string username;
    private string password;
    private integer age;
    private string email;
}

4-2:address 实体类

@data
@tablename("address")
public class address {
    @tableid
    private long id;
    private long userid;  // 外键,关联user.id
    private string province;
    private string city;
    private string district;
    private string detail;
}

4-3:userdto 数据传输对象

@data
public class userdto {
    private long id;
    private string username;
    private string password;
    private integer age;
    private string email;
    // 使用list接收一对多关系
    private list<address> addresslist;
}

4-4:usermapper代码查询

mpjlambdawrapper<user> wrapper = new mpjlambdawrapper<user>()
                .selectall(user.class)
                //全部映射 不用考虑字段名重复问题(比如 id), 会对重复列自动添加别名
                .selectcollection(address.class, userdto::getaddresslist)
                .leftjoin(address.class, address::getuserid, user::getid);
list<userdto> dtolist= usermapper.selectjoinlist(userdto.class, wrapper);

4-5:生成的sql语句,基于mpjlambdawrapper代码,mybatis-plus-join会生成如下sql:

select 
    user.id as user_id,
    user.username as user_username,
    user.password as user_password,
    user.age as user_age,
    user.email as user_email,
    address.id as address_id,
    address.user_id as address_user_id,
    address.province as address_province,
    address.city as address_city,
    address.district as address_district,
    address.detail as address_detail
from 
    user
left join 
    address on address.user_id = user.id

4-6:执行结果生成sql处理,mybatis-plus-join会自动处理结果集,将数据映射为:

list<userdto> dtolist = [
    {
        "id": 1,
        "username": "张三",
        "password": "123456",
        "age": 25,
        "email": "zhangsan@example.com",
        "addresslist": [
            {
                "id": 1,
                "userid": 1,
                "province": "北京",
                "city": "北京市",
                "district": "海淀区",
                "detail": "中关村大街1号"
            },
            {
                "id": 2,
                "userid": 1,
                "province": "上海",
                "city": "上海市",
                "district": "浦东新区",
                "detail": "张江高科技园区"
            }
        ]
    },
]

注意

//使用如下方法
joinwrappers.lambda(doorcontrollersettingsdoorinfodo.class)
//替换
new mpjlambdawrapper<doorcontrollersettingsdoorinfodo>()
//使用如下方法
wrappers.lambda(doorcontrollersettingsdoorinfodo.class)
//替换
new lambdawrapper<doorcontrollersettingsdoorinfodo>()

到此这篇关于mybatisplus中join联表查询的项目实践的文章就介绍到这了,更多相关mybatisplus join联表查询内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com