Mybatis-plus实现联表查询
Mybatis-plus实现联表查询
·
本示例基于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("字段", 值)。
更多推荐
所有评论(0)