SoFunction
Updated on 2025-04-17

Springboot integration Mybatis-plus-join-boot-start detailed explanation

Import mybit-plus dependencies Dependencies with mybatis-plus-join

<dependency>
    <groupId></groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId></groupId>
    <artifactId>mybatis-plus-join-boot-starter</artifactId>
    <version>1.4.13</version>
</dependency>

Prepare the following table template

CREATE TABLE `sys_user` (
                            `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
                            `dept_id` bigint DEFAULT NULL COMMENT 'Department ID',
                            `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'account',
                            `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'password',
                            `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'Nick name',
                            `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'User email',
                            `phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'phone number',
                            `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT 'User Gender (0 Male 1 Female)',
                            `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Avatar address',
                            `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'Account status (0 normal, 1 disabled)',
                            `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Remark',
                            `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Delete flag',
                            `version` int DEFAULT NULL COMMENT 'Optimistic lock',
                            `create_by` bigint DEFAULT NULL COMMENT 'Create person',
                            `create_time` datetime DEFAULT NULL COMMENT 'Create time',
                            `update_by` bigint DEFAULT NULL COMMENT 'Update person',
                            `update_time` datetime DEFAULT NULL COMMENT 'Update time',
                            PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='User Information';

CREATE TABLE `sys_dept` (
                            `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'Department ID',
                            `parent_id` bigint DEFAULT '0' COMMENT 'Father Department ID',
                            `dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'Department name',
                            `order_num` int DEFAULT '0' COMMENT 'Display order',
                            `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT 'District status (0 normal, 1 deactivated)',
                            `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Remark',
                            `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Delete flag',
                            `create_by` bigint DEFAULT NULL COMMENT 'Create person',
                            `create_time` datetime DEFAULT NULL COMMENT 'Create time',
                            `update_by` bigint DEFAULT NULL COMMENT 'Update person',
                            `update_time` datetime DEFAULT NULL COMMENT 'Update time',
                            PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='Department Information';

Inherit MPJBaseMapper in mapper

Write another mapper to inherit MPJBaseMapper

public interface SysUserMapper extends MPJBaseMapper<SysUser> {
}
public interface SysDeptMapper extends MPJBaseMapper<SysDept> {
}

Implement the inheritance of MPJBaseServiceImpl in the class and implement service

@Service
public class SysUserServiceImpl extends MPJBaseServiceImpl&lt;SysUserMapper, SysUser&gt; implements SysUserService {
@Autowired
private SysUserMapper sysUserMapper;

/**
  * Test: List multi-table joint search
  *
  * @return
  */
@Override
public List&lt;SysUser&gt; sysUserList() {
    //Build query conditions    MPJLambdaWrapper&lt;SysUser&gt; queryWrapper = new MPJLambdaWrapper&lt;&gt;();
    //Joint search    ()
            .select(SysDept::getDeptName)
            .leftJoin(, SysDept::getId, SysUser::getDeptId);
    //return    return list(queryWrapper);
}

/**
  * delete
  *
  * @param id
  * @return
  */
@Override
public Boolean deleteById(Long id) {
    //Create a delete condition    DeleteJoinWrapper&lt;SysUser&gt; eq = ()
            //Connect with dept            .leftJoin(, SysDept::getId, SysUser::getDeptId)
            //Delete according to id            .eq(SysUser::getId, id);
    return deleteJoin(eq);
}
}

service inherits MPJBaseService

public interface SysUserService extends MPJBaseService&lt;SysUser&gt; {
/**
  * List: Multi-table
  *
  * @return
  */
List&lt;SysUser&gt; sysUserList();

/**
  * delete
  *
  * @param id
  * @return
  */
Boolean deleteById(Long id);
}

controller

@RestController
@RequestMapping("/sysUser")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;

    /**
      * List: Multi-table
      *
      * @return
      */
    @GetMapping("/sysUserList")
    public List&lt;SysUser&gt; sysUserList() {
        return ();
    }

    /**
      * delete
      *
      * @param id
      * @return
      */
    @DeleteMapping("/deleteById/{id}")
    public Boolean deleteById(@PathVariable("id") Long id) {
        return (id);
    }
}

Finally, test it yourself ~

Summarize

The above is personal experience. I hope you can give you a reference and I hope you can support me more.