一.mybatisplus插件
微服务项目中把MybatisplusConfig配置放在common包下,因为属于公共功能
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisplusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// paginationInterceptor.setLimit(你的最大单页限制数量,默认 500 条,小于 0 如 -1 不受限制);
return paginationInterceptor;
}
}
二.Controller层
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping("/list")
public R<Page<User>> listBySendTime(){
//调用service层
Page<User> userPage = userService.listBySendTime();
return R.ok(userPage);
}
}
三.service层
service层
public interface IUserService extends IService<User> {
//分页查询
Page<User> listBySendTime();
}
serviceImpl层
@Service
public class UserServiceImpl extends ServiceImpl<UserDao, User> implements IUserService {
@Resource
private UserDao userDao;
@Override
public Page<User> listBySendTime(){
//获取今天的日期
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
//获取前一天日期
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date dateBefore = calendar.getTime();
//获取 后一天日期
calendar.add(Calendar.DAY_OF_MONTH, +2);
Date dateAfter = calendar.getTime();
//查询今天发车的订单
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.between("send_time", dateBefore, dateAfter);
//分页操作,查询第1页,每页5条记录
Page<User> page = new Page<>(1,5);
Page<User> userPage = (Page<User>) userDao.selectPage(page, queryWrapper);
userPage.getRecords().forEach(ts -> {
ts.setStateName(UserState.NO_SEND.getName(ts.getStateValue()));
});
return userPage;
}
}
四.dao层不用做任何操作
@Mapper
public interface UserDao extends BaseMapper<User> {
}
五.自定义封装page类,添加字段
仿造page类的写法,将page类全部换成UserPage
public class UserPages<T> extends Page<T> {
//待入库状态
private Long isNotIn;
//正在入库状态,total指的是查询出来所有的记录数量
private Long isBeingIn;
//构造函数,自定义传入的参数
public UserPages(long isNotIn, long isBeingIn, long current, long size){
super(current, size);
this.isBeingIn = isBeingIn;
this.isNotIn = isNotIn;
}
public Long getIsNotIn() {
return isNotIn;
}
public void setIsNotIn(Long isNotIn) {
this.isNotIn = isNotIn;
}
public Long getIsBeingIn() {
return isBeingIn;
}
public void setIsBeingIn(Long isBeingIn) {
this.isBeingIn = isBeingIn;
}
}
分页操作变化:多了两个参数传进来,利用Postman验证时,分页数据会多两个信息,即isNotIn, isBeingIn字段
//分页操作,查询第1页,每页5条记录
UserPage<User> page = new UserPage<>(isNotIn, isBeingIn, 1, 5);