本示例基于springboot

引入依赖(mybatis-plus&mybatis-plus-join)


        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

        <dependency>
            <groupId>com.github.yulichang</groupId>
            <artifactId>mybatis-plus-join</artifactId>
            <version>1.2.4</version>
        </dependency>

创建两个实例类。(constructor、getter、setter省略)

public class User {
    private Integer id;
    private String name;
    private Integer phone;
    private Integer paid;
    private Date date;
    private String reDate;
    private Integer cId;
}
public class Clothing {
    private Integer id;
    private String name;
    private String style;
    private String color;
    private Double price;
    private Integer counts;
}

创建UserInfo用来接收联表查询后的结果(constructor、getter、setter省略)

public class UserInfo {
    private Integer uId;
    private String uName;
    private Integer phone;
    private Integer paid;
    private Date date;
    private Date reDate;
    private String cName;
}

MPJLambdaWrapper

主表User实例类不再继承BaseMapper,而是MPJBaseMapper.

@Mapper
public interface UserInfoMapper extends MPJBaseMapper<User> 

(只要两个实例类的mapper其中一个继承MPJBaseMapper就可以,两个mapper都继承MPJBaseMapper也是可以的)。



MPJLambdaWrapper是我们要用到的查询条件 wrapper.

   @Test
    void testJoin() {
        List<UserInfo> list = mapper.selectJoinList(UserInfo.class,
                new MPJLambdaWrapper<User>()
                        .selectAs(User::getId, UserInfo::getUId)
                        .selectAs(User::getName, UserInfo::getUName)
                        .select(User::getPhone)
                        .select(User::getPaid)
                        .select(User::getDate)
                        .select(User::getReDate)
                        .selectAs(Clothing::getName, UserInfo::getCName)
                        .leftJoin(Clothing.class, Clothing::getId, User::getCId)
                        .eq(User::getId, 1));
        list.forEach(System.out::println);
    }

通过别名查询:.selectAs(" 要查询的字段(方法的形式填入) " , " 字段别名(方法的形式填入) ") 

查询:.select("要查询的字段(方法的形式填入)")

联表:.leftJoin("联合表的类" , "绑定的key" , "绑定的key")

查询条件:.eq("字段", 值)。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐