mybatisplus一对一分页查询示例
时间: 2024-04-09 18:26:30 浏览: 108
MyBatis Plus是一个基于MyBatis的增强工具,提供了许多便捷的功能来简化开发。在MyBatis Plus中,一对一分页查询可以通过使用Wrapper来实现。
下面是一个示例,演示了如何使用MyBatis Plus进行一对一分页查询:
1. 首先,定义两个实体类,分别为主表和关联表的实体类。假设主表为User,关联表为Role。
```java
public class User {
private Long id;
private String username;
private Long roleId;
// 省略getter和setter方法
}
public class Role {
private Long id;
private String roleName;
// 省略getter和setter方法
}
```
2. 创建对应的Mapper接口和Mapper XML文件。
UserMapper.java:
```java
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUserWithRolePage(Page<User> page, @Param("username") String username);
}
```
UserMapper.xml:
```xml
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUserWithRolePage" resultMap="userWithRoleResultMap">
SELECT u.*, r.role_name AS roleName
FROM user u
LEFT JOIN role r ON u.role_id = r.id
WHERE u.username LIKE CONCAT('%', #{username}, '%')
</select>
<resultMap id="userWithRoleResultMap" type="com.example.entity.User">
<id column="id" property="id" />
<result column="username" property="username" />
<association property="role" javaType="com.example.entity.Role">
<id column="role_id" property="id" />
<result column="roleName" property="roleName" />
</association>
</resultMap>
</mapper>
```
3. 在Service层中调用Mapper接口的方法进行查询。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> selectUserWithRolePage(Page<User> page, String username) {
return userMapper.selectUserWithRolePage(page, username);
}
}
```
4. 在Controller层中接收参数,并调用Service层的方法进行查询。
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/search")
public IPage<User> searchUsers(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String username) {
Page<User> page = new Page<>(pageNum, pageSize);
return userService.selectUserWithRolePage(page, username);
}
}
```
这样,当访问`/users/search`接口时,可以传入`pageNum`、`pageSize`和`username`参数来进行一对一分页查询。
阅读全文