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<SysUserMapper, SysUser> implements SysUserService { @Autowired private SysUserMapper sysUserMapper; /** * Test: List multi-table joint search * * @return */ @Override public List<SysUser> sysUserList() { //Build query conditions MPJLambdaWrapper<SysUser> queryWrapper = new MPJLambdaWrapper<>(); //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<SysUser> 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<SysUser> { /** * List: Multi-table * * @return */ List<SysUser> 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<SysUser> 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.