当前位置: 首页 > news >正文

1688黄页网免费网站做外贸服饰哪个个网站好

1688黄页网免费网站,做外贸服饰哪个个网站好,wordpress php开发手册,seo发帖网站引言在 Spring Boot MyBatis-Plus 的开发中,分页查询是常见的需求。然而,有时我们会遇到分页失效的问题,尤其是在方法参数上添加 Param 注解后。本文将通过一个实际案例,分析 Param 注解如何影响 MyBatis-Plus 的分页机制&#x…

引言

在 Spring Boot + MyBatis-Plus 的开发中,分页查询是常见的需求。

然而,有时我们会遇到分页失效的问题,尤其是在方法参数上添加 @Param 注解后。

本文将通过一个实际案例,分析 @Param 注解如何影响 MyBatis-Plus 的分页机制,并提供解决方案。


问题重现

1. 原始代码

AlertServiceImpl 中,分页查询方法 page() 调用了 AlertDaolist() 方法:

@Override
public PageData<AlertDTO> page(Map<String, Object> params) {IPage<AlertEntity> page = getPage(params, null, false);List<AlertDTO> list = baseDao.list(params);return getPageData(list, page.getTotal(), AlertDTO.class);
}

AlertDaolist() 方法如下:

@DataSource(name = DataSourceNames.SECOND)
List<AlertDTO> list(@Param("p") Map<String, Object> params);

此时,分页失效,SQL 查询返回所有数据,而不是分页后的结果。

2. 修复后的代码

移除 @Param("p") 后,分页恢复正常:

@DataSource(name = DataSourceNames.SECOND)
List<AlertDTO> list(Map<String, Object> params);

原因分析

1. MyBatis-Plus 的分页机制

MyBatis-Plus 的分页插件(PaginationInterceptor)会在执行 SQL 前自动解析分页参数(如 pagesize),并修改 SQL 添加 LIMIT 子句。

2. @Param 注解的影响

  • 不加 @Param:MyBatis-Plus 能直接读取 Map<String, Object> 中的分页参数(如 params.get("page")),并正确分页。
  • @Param("p"):整个 Map 被包装成命名参数 p,MyBatis-Plus 无法直接访问 p.pagep.size,导致分页插件无法识别分页参数,最终 SQL 没有 LIMIT 子句,返回全部数据。

解决方案

方案 1:移除 @Param 注解(推荐)

@DataSource(name = DataSourceNames.SECOND)
List<AlertDTO> list(Map<String, Object> params);

优点

  • 保持 MyBatis-Plus 默认分页行为,无需额外修改 SQL。
  • 代码简洁,符合 MyBatis-Plus 最佳实践。

方案 2:手动分页(适用于必须使用 @Param 的情况)

如果必须使用 @Param,可以在 XML 中手动添加 LIMIT

<select id="list" resultType="io.installer.modules.sys.dto.AlertDTO">SELECT ...<where>hd.is_deleted=0</where>LIMIT #{p.page}, #{p.size}
</select>

缺点

  • 需要手动计算分页偏移量,容易出错。
  • 不适用于所有数据库(如 Oracle 需要使用 ROWNUM)。

方案 3:改用 IPage 参数(最佳 MyBatis-Plus 实践)

@DataSource(name = DataSourceNames.SECOND)
List<AlertDTO> list(IPage<AlertDTO> page, @Param("query") Map<String, Object> params);

优点

  • MyBatis-Plus 自动处理分页逻辑,无需手动干预。
  • 支持更灵活的分页查询。

总结

方案

适用场景

优点

缺点

移除 @Param

一般情况

简单高效

无法自定义参数名

手动分页

必须使用 @Param

可控性强

需要手动计算分页

IPage 参数

复杂分页查询

符合 MyBatis-Plus 最佳实践

需要调整方法签名

最佳实践建议

  • 优先移除 @Param**,让 MyBatis-Plus 自动处理分页。
  • 如需自定义参数名,可改用 IPage 参数 + @Param 组合。

结论

在 MyBatis-Plus 中,@Param 注解有时会干扰分页插件的参数解析机制,导致分页失效。通过移除 @Param 或改用 IPage 参数,可以确保分页功能正常工作。理解 MyBatis-Plus 的分页机制,有助于避免类似问题,提高开发效率。

http://www.dtcms.com/a/495940.html

相关文章:

  • 杭州做企业网站公司网络营销策略应遵循的原则
  • 对“机器人VCU”进行一个详细、系统的讲解。
  • 陕西省城乡住房和建设厅网站网站建设shzanen
  • 49.字母异位词分组
  • 移动网站登录入口wordpress孕婴模板
  • 网站开发的四个高级阶段包括天津网站优化流程
  • 3.6 第一个JSON Schema(一)
  • 指针终极理解
  • 门头沟区专业网站制作网站建设wordpress登录框插件
  • 没网站做推广wordpress建站 域名
  • 企业客户管理优化方案:构建高效客户关系体系
  • 【隐语SecretFlow用户案例】亚信科技构建统一隐私计算框架探索实践
  • Win11系统安装TranslucentTB报错解决
  • 国外唯美flash个人网站欣赏资阳房产网站建设
  • 营销型企业网站怎么建站虚拟商品自动发货网站搭建教程
  • 网站文件命名规则网站做电源
  • ProE/Creo模型高效转换3DXML技术方案:在线转换工具全解析
  • 投资网站策划wordpress配置七牛
  • 吉林电商网站建设公司哪家好旅游网页制作教程
  • C#实现SQL Server→Snowflake建表语句转换工具
  • 一种面向 AIoT 定制化场景的服务架构设计方案
  • 免费做网站刮刮卡舆情查询
  • 深圳建设厅网站官网免费虚拟主机官网
  • 塑胶制造生产ERP:有哪些系统值得关注
  • 怎么学习做网站vue is做的购物网站
  • 广州白云手机网站建设佛山专业做网站公司有哪些
  • 自己可以做一个网站吗如何删除网站后台的文章
  • PostgreSQL学习之postgis编译
  • unitree rl gym项目实践记录1:部署unitree rl gym项目
  • 国外的工业设计网站西安高科鱼化建设有限公司网站