现在有一张表user

要求是如何使用dto和vo和实体类进行分页查询根据username查询,长度必须大于0才查询,dto接收数据之后调用mybatis-plus中的mapper内置selectPage方法查询返回一个IPage对象,把它转成vo之后返回给前端
现在有一张表user

要实现基于 dto 、 vo 和实体类的分页查询,可按以下步骤操作:
java
@Data
@TableName("user")
public class UserEntity implements Serializable {
private Long id;
private String username;
private String password;
}
java
@Data
public class UserDTO implements Serializable {
private String username;
private Integer pageNum = 1;
private Integer pageSize = 10;
}
java
@Data
public class UserVO implements Serializable {
private Long id;
private String username;
}
继承 MyBatis - Plus 的 BaseMapper ,代码如下:
java
public interface UserMapper extends BaseMapper<UserEntity> {
}
java
public interface UserService extends IService<UserEntity> {
IPage<UserVO> pageQuery(UserDTO userDTO);
}
java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
@Override
public IPage<UserVO> pageQuery(UserDTO userDTO) {
LambdaQueryWrapper<UserEntity> queryWrapper = new LambdaQueryWrapper<>();
if (userDTO.getUsername() != null && userDTO.getUsername().length() > 0) {
queryWrapper.like(UserEntity::getUsername, userDTO.getUsername());
}
IPage<UserEntity> entityPage = new Page<>(userDTO.getPageNum(), userDTO.getPageSize());
IPage<UserEntity> userEntityIPage = baseMapper.selectPage(entityPage, queryWrapper);
IPage<UserVO> voPage = new Page<>();
BeanUtils.copyProperties(userEntityIPage, voPage);
List<UserVO> voList = userEntityIPage.getRecords().stream().map(entity -> {
UserVO vo = new UserVO();
BeanUtils.copyProperties(entity, vo);
return vo;
}).collect(Collectors.toList());
voPage.setRecords(voList);
return voPage;
}
}
java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/page")
public Result<IPage<UserVO>> pageQuery(@RequestBody UserDTO userDTO) {
IPage<UserVO> page = userService.pageQuery(userDTO);
return Result.success(page);
}
}