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

域名net表示什么网站哪个网站可以做全景图

域名net表示什么网站,哪个网站可以做全景图,怎样建设公司网站小程序,深圳在哪些网站找什么好处Spring Boot集成PageHelper#xff1a;轻松实现数据库分页功能 1. 为什么需要分页#xff1f; 分页是处理大数据量查询的核心技术#xff0c;其重要性体现在#xff1a; 性能优化#xff1a;避免单次查询返回过多数据导致内存溢出或响应延迟。用户体验#xff1a;前端展… Spring Boot集成PageHelper轻松实现数据库分页功能 1. 为什么需要分页 分页是处理大数据量查询的核心技术其重要性体现在 性能优化避免单次查询返回过多数据导致内存溢出或响应延迟。用户体验前端展示分页导航用户可快速定位目标数据。网络开销减少不必要的数据传输节省带宽。 传统分页的痛点 复杂SQL需手动编写LIMIT、OFFSET等分页语句尤其多表联查时易出错。维护困难分页逻辑散落在多个DAO层方法中修改分页规则需全局调整。 2. PageHelper简介 PageHelper是MyBatis的物理分页插件核心功能包括 自动分页拦截SQL并动态添加分页语句无需修改原查询逻辑。多数据库支持自动识别MySQL、Oracle等方言生成对应分页语法。无缝集成与Spring Boot和MyBatis深度整合仅需简单配置即可使用。 优势对比 方案代码量可维护性跨数据库支持手写SQL分页多差无PageHelper少优有Spring Data JPA中等良有 3. 环境准备 步骤1创建Spring Boot项目 使用 Spring Initializr 生成项目勾选 MyBatis FrameworkMySQL Driver或其他数据库驱动 步骤2添加PageHelper依赖 !-- Maven -- dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.4.7/version /dependency步骤3配置数据源与分页参数 # application.yml spring:datasource:url: jdbc:mysql://localhost:3306/demo?useSSLfalseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*.xmlpagehelper:helperDialect: mysql # 指定数据库方言reasonable: true # 页码越界自动修正如pageNum100时返回最后一页supportMethodsArguments: true # 支持通过方法参数传递分页条件4. 核心实现 4.1 创建实体类和Mapper接口 // User.java Data public class User {private Long id;private String name;private String email; }// UserMapper.java Mapper public interface UserMapper {ListUser selectAllUsers(); }4.2 编写Mapper XML文件 !-- resources/mapper/UserMapper.xml -- mapper namespacecom.example.mapper.UserMapperselect idselectAllUsers resultTypeUserSELECT id, name, email FROM user/select /mapper4.3 Service层实现分页查询 Service public class UserService {Autowiredprivate UserMapper userMapper;public PageInfoUser getUsers(int pageNum, int pageSize) {// 关键调用startPage后第一个查询自动分页PageHelper.startPage(pageNum, pageSize);ListUser users userMapper.selectAllUsers();return new PageInfo(users);} }4.4 Controller层暴露API RestController RequestMapping(/api/users) public class UserController {Autowiredprivate UserService userService;GetMappingpublic ResponseEntityPageInfoUser listUsers(RequestParam(defaultValue 1) int page,RequestParam(defaultValue 10) int size) {PageInfoUser pageInfo userService.getUsers(page, size);return ResponseEntity.ok(pageInfo);} }4.5 分页结果示例 请求 GET /api/users?page2size5 返回 {total: 50,pageNum: 2,pageSize: 5,pages: 10,list: [{id: 6, name: User6, email: user6example.com},...] }5. 高级配置 5.1 自定义分页参数 pagehelper:params: countcountSql # 将COUNT查询转换为COUNT_SQL优化语句page-size-zero: true # 允许pageSize0时返回全部结果max-page-size: 100 # 限制每页最大数据量5.2 多数据源分页 Configuration public class DataSourceConfig {BeanConfigurationProperties(spring.datasource.db1)public DataSource db1DataSource() {return DataSourceBuilder.create().build();}Beanpublic SqlSessionFactory db1SqlSessionFactory() throws Exception {SqlSessionFactoryBean factory new SqlSessionFactoryBean();factory.setDataSource(db1DataSource());// 配置PageHelper插件PageInterceptor pageInterceptor new PageInterceptor();Properties props new Properties();props.setProperty(helperDialect, mysql);pageInterceptor.setProperties(props);factory.setPlugins(pageInterceptor);return factory.getObject();} }5.3 与Spring Data JPA结合 适用场景同时需要JPA的便捷CRUD和复杂SQL分页。实现方式在JPA Repository中注入MyBatis Mapper混合使用。 6. 常见问题与解决方案 问题1分页失效 排查步骤 确认PageHelper.startPage()在查询前调用。检查是否配置了多个MyBatis插件导致拦截顺序冲突。 问题2SQL注入风险 防御措施 避免直接拼接SQL参数如ORDER BY ${sortField}。使用PageHelper的orderBy方法安全排序PageHelper.startPage(1, 10).setOrderBy(id desc);问题3分页结果不准确 原因 查询包含GROUP BY或子查询时自动生成的COUNT语句可能错误。 解决手动指定COUNT查询select idselectAllUsers resultTypeUserSELECT id, name FROM user /select select idselectAllUsers_COUNT resultTypeLongSELECT COUNT(1) FROM user /select7. 总结与扩展 适用场景 后台管理系统数据表格展示移动端APP的分页加载大数据量报表分批处理 扩展学习 PageHelper官方文档MyBatis动态SQL技巧实战案例电商订单分页查询 流程图PageHelper分页流程 #mermaid-svg-HJBhpJqplTnOK0z8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 .error-icon{fill:#552222;}#mermaid-svg-HJBhpJqplTnOK0z8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HJBhpJqplTnOK0z8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-HJBhpJqplTnOK0z8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HJBhpJqplTnOK0z8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HJBhpJqplTnOK0z8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HJBhpJqplTnOK0z8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HJBhpJqplTnOK0z8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HJBhpJqplTnOK0z8 .marker.cross{stroke:#333333;}#mermaid-svg-HJBhpJqplTnOK0z8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HJBhpJqplTnOK0z8 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-HJBhpJqplTnOK0z8 text.actortspan{fill:black;stroke:none;}#mermaid-svg-HJBhpJqplTnOK0z8 .actor-line{stroke:grey;}#mermaid-svg-HJBhpJqplTnOK0z8 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 .sequenceNumber{fill:white;}#mermaid-svg-HJBhpJqplTnOK0z8 #sequencenumber{fill:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 .messageText{fill:#333;stroke:#333;}#mermaid-svg-HJBhpJqplTnOK0z8 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-HJBhpJqplTnOK0z8 .labelText,#mermaid-svg-HJBhpJqplTnOK0z8 .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-HJBhpJqplTnOK0z8 .loopText,#mermaid-svg-HJBhpJqplTnOK0z8 .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-HJBhpJqplTnOK0z8 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-HJBhpJqplTnOK0z8 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-HJBhpJqplTnOK0z8 .noteText,#mermaid-svg-HJBhpJqplTnOK0z8 .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-HJBhpJqplTnOK0z8 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-HJBhpJqplTnOK0z8 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-HJBhpJqplTnOK0z8 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-HJBhpJqplTnOK0z8 .actorPopupMenu{position:absolute;}#mermaid-svg-HJBhpJqplTnOK0z8 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-HJBhpJqplTnOK0z8 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-HJBhpJqplTnOK0z8 .actor-man circle,#mermaid-svg-HJBhpJqplTnOK0z8 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-HJBhpJqplTnOK0z8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Client Controller Service PageHelper MyBatis DB 请求/api/users?page2size10 调用getUsers(2,10) startPage(2,10) 执行selectAllUsers() 拦截SQL 发送SELECT ... LIMIT 10 OFFSET 10 返回分页数据 包装为PageInfo 返回PageInfo 响应JSON Client Controller Service PageHelper MyBatis DB 避坑指南 索引优化确保分页字段如id有索引避免OFFSET过大时性能下降。参数校验校验pageNum和pageSize的合法性防止负数或超大值。线程安全PageHelper.startPage()基于ThreadLocal需注意异步场景下的数据隔离。 通过本文您已掌握Spring Boot集成PageHelper的核心技巧。立即实践让分页功能从此高效又优雅
http://www.zqtcl.cn/news/343621/

相关文章:

  • 莆田网站建设五维网络有限公司零基础网站开发要学多久
  • 重庆官方网站查询系统2020最近的新闻大事10条
  • 中国网站建设公司排行榜成都彩票网站建设
  • 网站域名解析失败个人推广网站
  • 东莞网站建设网络公司排名卓业网站建设
  • 建立自己的网站平台的好处高校英文网站建设
  • 大力推进网站集约化建设兰州优秀网站推广
  • 手机wap网站怎样从微信公众号打开辽宁省住房和城乡建设厅网站上不去
  • 网站建设备案 优帮云四川建设设计公司网站
  • dede网站搬家 空间转移的方法网站建设多少钱一个平台
  • 山东济南网站开发互联网创业项目哪家好平台
  • 公司网站建设文案济南网站定制策划
  • 怎么做网站例如京东小红书推广引流
  • 游戏网站建设策划书企业vi包含哪些内容
  • 教育视频网站开发网站响应时间长
  • 在哪些网站做收录比较快张家港江阴网站设计
  • 商业网站最佳域名贵州网站建设
  • 毕业设计做网站的步骤网络推广关键词优化公司
  • 悠悠我心的个人网站怎么做怎么开网站平台
  • 行业网站产品选择废旧材料手工制作大全
  • 企业内网网站建设徐州关键词优化公司
  • step7用法fc州网站建设discuz网站论坛间帖子转移
  • 网站的js效果代码大全wordpress主题修改颜色教程
  • 安徽省城乡和建设厅网站申请免费域名邮箱
  • 溧阳网站建设哪家好wordpress 迁移 空白
  • 网页设计个人网站设计建设营销型网站多少钱
  • 做网站时联系我们制作模板西部数据网站空间
  • 合肥网站建设服务公司wordpress安装字体
  • 建设阅读网站的意义长沙微推广平台
  • 所有搜索引擎蜘蛛不来网站了怎么开发手机页面