mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
3.1 KiB
3.1 KiB
mybatis-plus-join
-
本页功能只能在1.2.0测试版中使用,最新版本 1.2.0.Beta1
-
点个Star支持一下吧 :)
QQ群:1022221898
使用方法
安装
- Maven
<dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join</artifactId> <version>1.2.0.Beta1</version> </dependency>
- Gradle
或者clone代码到本地执行 mvn install, 再引入以上依赖implementation group: 'com.github.yulichang', name: 'mybatis-plus-join', version: '1.2.0.Beta1'
注意: mybatis plus version >= 3.4.0
使用
- mapper继承MPJBaseMapper (必选)
- service继承MPJBaseService (可选)
- serviceImpl继承MPJBaseServiceImpl (可选)
@MPJMapping注解
UserDO.java
@Data
@TableName("user")
public class UserDO {
@TableId
private Integer id;
private Integer pid;//父id
/* 其他属性略 */
/**
* 一对一
*/
@TableField(exist = false)
@MPJMapping(tag = UserDO.class, thisField = "pid" /*joinField = "id" 可以不填默认获取主键*/)
private UserDO pUser;
/**
* 一对多
*/
@TableField(exist = false)
@MPJMapping(tag = UserAddressDO.class, /*thisField = "id" 可以不填默认获取主键*/ joinField = "userId")
private List<UserAddressDO> addressDOList;
}
UserAddressDO.java
@Data
@TableName("user_address")
public class UserAddressDO {
@TableId
private Integer id;
private Integer userId;
/* 其他属性略 */
}
使用
@SpringBootTest
public class MPJDeepTest {
@Resource
private UserService userService;
@Test
void test1() {
UserDO deep = userService.getByIdDeep(1);
System.out.println(deep);
}
@Test
void test2() {
List<UserDO> list = userService.listByIdsDeep(Arrays.asList(1, 4));
list.forEach(System.out::println);
}
@Test
void test3() {
List<UserDO> list = userService.listByMapDeep(new HashMap<String, Object>() {{
put("id", 1);
}});
list.forEach(System.out::println);
}
@Test
void test4() {
UserDO one = userService.getOneDeep(Wrappers.<UserDO>lambdaQuery()
.eq(UserDO::getId, 1));
System.out.println(one);
}
@Test
void test5() {
Map<String, Object> deep = userService.getMapDeep(Wrappers.<UserDO>lambdaQuery()
.eq(UserDO::getId, 1));
System.out.println(deep);
}
}
MPJMapping 说明:
- MPJMapping tag 关联实体类
- MPJMapping thisField 当前类关联对应的字段的属性名,可以不填,默认为当前类的主键
- MPJMapping joinField 关联类对应的字段的属性名,可以不填,默认为关联类的主键
- MPJMapping isThrowExp 一对一查询时,如果查询到多条记录是否抛出异常,true:抛出异常,false:获取列表第一条数据
- 更多功能请看代码注释 MPJMapping