mybatis-plus-join/MAPPING.md
2021-08-13 10:46:17 +08:00

3.0 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
     implementation group: 'com.github.yulichang', name: 'mybatis-plus-join', version: '1.2.0.Beta1'
    
    或者clone代码到本地执行 mvn install, 再引入以上依赖

    注意: 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