当前位置: 首页> 娱乐> 影视 > 手机主页推荐_网站建设前景怎么样_搜什么关键词你都懂的_莫停之科技windows优化大师

手机主页推荐_网站建设前景怎么样_搜什么关键词你都懂的_莫停之科技windows优化大师

时间:2025/7/9 17:44:04来源:https://blog.csdn.net/nonagontech/article/details/142830597 浏览次数:0次
手机主页推荐_网站建设前景怎么样_搜什么关键词你都懂的_莫停之科技windows优化大师

我目前使用的mybatis-plus是3.2.0版本,目前最新的版本是3.4.2。由于项目写了很多,不方便改成最新版。

最新版和本版本也有不少差距,但是均可忽略。

就本版本而言,主要讨论两个问题,一个是分页,一个是根据日期查询。

1.分页

首先按照官方文档,编写一个配置类:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @ClassName:* @author: flitsneak nonagon* @date: 2021/3/12*/
@Configuration
public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor(){PaginationInterceptor paginationInterceptor = new PaginationInterceptor();return paginationInterceptor;}
}

接下来编写vo用来接收前端传来的参数,分别为起始页码和当前页还有分页条件,这里的分页条件为petId是个String。

@Data
public class PetPageVO implements Serializable {private String petId;private Integer currPage;private Integer pageSize;
}

然后controller:

/*** 分页查询宠物病例历史列表* @param petPageVO* @return*/
@PostMapping("/listPetExamByPetId")
public R listPetExamByPetId(@RequestBody PetPageVO petPageVO){String pageNo = petPageVO.getCurrPage().toString();String pageSize = petPageVO.getPageSize().toString();String petId = petPageVO.getPetId();Map map = new HashMap();map.put("page",pageNo);map.put("limit",pageSize);map.put("petId",petId);PageUtils pageUtils = petExamService.queryPage(map);return new R(true,StatusCode.PETEXAMLISTSUCCESS.getCode(),StatusCode.PETEXAMLISTSUCCESS.getMsg(),pageUtils);
}

这里要注意不要用Integer,会提示转换失败报错,我们可以看mybatis-plus底层是怎么做的:

public class Query<T> {public IPage<T> getPage(Map<String, Object> params) {return this.getPage(params, null, false);}public IPage<T> getPage(Map<String, Object> params, String defaultOrderField, boolean isAsc) {//分页参数long curPage = 1;long limit = 10;if(params.get(Constant.PAGE) != null){curPage = Long.parseLong((String)params.get(Constant.PAGE));}if(params.get(Constant.LIMIT) != null){limit = Long.parseLong((String)params.get(Constant.LIMIT));}//分页对象Page<T> page = new Page<>(curPage, limit);//分页参数params.put(Constant.PAGE, page);//排序字段//防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD));String order = (String)params.get(Constant.ORDER);//前端字段排序if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){if(Constant.ASC.equalsIgnoreCase(order)) {return  page.addOrder(OrderItem.asc(orderField));}else {return page.addOrder(OrderItem.desc(orderField));}}//没有排序字段,则不排序if(StringUtils.isBlank(defaultOrderField)){return page;}//默认排序if(isAsc) {page.addOrder(OrderItem.asc(defaultOrderField));}else {page.addOrder(OrderItem.desc(defaultOrderField));}return page;}
}

可以看到这里的params.get(Constant.PAGE)如果不为空则读取参数curPage = Long.parseLong((String)params.get(Constant.PAGE)),这里有个转换,先转换为整形再转换为string。Constant.PAGE 其实就是page。

然后我们分页即可:

@Service("PetExamService")
public class PetExamServiceImpl extends ServiceImpl<PetExamDao, PetExamEntity> implements PetExamService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {LambdaQueryWrapper<PetExamEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(PetExamEntity::getPetId,params.get("petId")).select();IPage<PetExamEntity> page = this.page(new Query<PetExamEntity>().getPage(params),lambdaQueryWrapper);return new PageUtils(page);}
}

2.根据日期查询

日期的处理一向比较严肃,mybatis-plus没有提供函数处理,所以要使用apply进行编写对应函数。

本案例是接收前端传入的日期数组并查询数据。

controller层:

/*** 根据日期范围查看宠物历史记录* @param dateArrays* @return*/
@PostMapping("/listPetHistoryExamByDateArray/{petId}")
public R listPetHistoryExamByDateArray(@PathVariable String petId,@RequestBody String[] dateArrays){LambdaQueryWrapper<PetExamEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(PetExamEntity::getPetId,petId);for (int i = 0; i < dateArrays.length; i++) {lambdaQueryWrapper.apply("TO_DAYS(create_time) = TO_DAYS('"+dateArrays[i]+"')").or();}lambdaQueryWrapper.select();List<PetExamEntity> list = petExamService.list(lambdaQueryWrapper);return new R(true,StatusCode.PETEXAMLISTBYHISTORYARRAYSUCCESS.getCode(),StatusCode.PETEXAMLISTBYHISTORYARRAYSUCCESS.getMsg(),list);
}

注意这里的apply里面传递的实际是sql,不要忘记加or否则是and连接。

关键字:手机主页推荐_网站建设前景怎么样_搜什么关键词你都懂的_莫停之科技windows优化大师

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: