网站改版设计wordpress 相册浏览器

pingmian/2025/10/8 19:51:46/文章来源:
网站改版设计,wordpress 相册浏览器,wordpress自动优化插件,百度云 wordpress 教程视频Mybatis 分页查询 1. 直接在 sql 中使用 limit2. 使用 RowBounds3. 使用 Mybatis 提供的拦截器机制3.1 创建一个自定义拦截器类实现 Interceptor3.2 创建分页查询函数 与 sql3.3 编写拦截逻辑3.4 注册 PageInterceptor 到 Mybatis 拦截器链中3.5 测试 准备一个分页查询类 Data… Mybatis 分页查询 1. 直接在 sql 中使用 limit2. 使用 RowBounds3. 使用 Mybatis 提供的拦截器机制3.1 创建一个自定义拦截器类实现 Interceptor3.2 创建分页查询函数 与 sql3.3 编写拦截逻辑3.4 注册 PageInterceptor 到 Mybatis 拦截器链中3.5 测试 准备一个分页查询类 Data public class Page {// 开始下标 由当前页和每页大小计数而来// 这里也可以是当前页在sql中进行开始下标的计算private int size;private int currentPage; }1. 直接在 sql 中使用 limit 创建一个分页查询函数 ListUser selectUserPage(Param(page)Page page, Param(name) String name);编写sql语句 select idselectUserPage resultTypecom.hzy.demo.pojos.Userselect *from user2whereif testname ! null and name ! name like %${name}%/if/whereif testpage ! nulllimit #{page.start},#{page.size}/if/select测试 Testvoid test08() {int currentPage 1; // 当前页int size 2; // 每页大小Page page new Page();page.setSize(size);page.setStart((currentPage-1)*size);// 第一页 不匹配姓名ListUser users userMapper.selectUserPage(page, null);for (User user : users){System.out.println(user);}// 第一页 匹配姓名page.setStart((currentPage-1)*size);users userMapper.selectUserPage(page, s);for (User user : users){System.out.println(user);}// 第三页 不匹配姓名currentPage 3;page.setStart((currentPage-1)*size);users userMapper.selectUserPage(page, null);for (User user : users){System.out.println(user);}}2. 使用 RowBounds RowBounds 是 MyBatis 中用于分页查询的一种简单实现方式它并不涉及数据库分页查询而是在查询结果返回后进行截取。 RowBounds 的构造函数需要传入两个参数 offset偏移量相当于前面的 start limit限制数量相当于前面的 size RowBounds 的实现原理比较简单它适用于一些简单的分页需求但在处理大量数据时可能会导致性能问题因为所有的数据都会被查询出来然后在内存中进行截取。对于更复杂的分页需求可以考虑使用 MyBatis 提供的分页插件或其他更高级的分页方案。 创建查询函数 ListUser selectUserPage(RowBounds rowBounds, Param(name) String name);编写 sql select idselectUserPage resultTypecom.hzy.demo.pojos.Userselect *from user2whereif testname ! null and name ! name like %${name}%/if/where/select测试 Testvoid test09() {int currentPage 1;int size 2;RowBounds rowBounds new RowBounds((currentPage - 1) * size, size);ListUser users userMapper.selectUserPage(rowBounds, null);for (User user : users) {System.out.println(user);}users userMapper.selectUserPage(rowBounds, s);for (User user : users) {System.out.println(user);}}3. 使用 Mybatis 提供的拦截器机制 MyBatis提供了拦截器Interceptor的机制允许用户在执行SQL语句的过程中进行拦截和干预。拦截器是在执行SQL语句前、后或者代替执行SQL语句的过程中插入自定义的逻辑从而可以实现一些额外的功能。 一些常见的分页插件比如 PageHelper 也是基于拦截器实现的这里我们自定义一个拦截器实现分页查询。 3.1 创建一个自定义拦截器类实现 Interceptor public class PageInterceptor implements Interceptor {// 该方法会在真正的SQL语句执行前后被调用可以在这里编写拦截逻辑。Overridepublic Object intercept(Invocation invocation) throws Throwable {return null;}// 用于包装目标对象返回一个代理对象该代理对象会拦截目标对象的方法调用。Overridepublic Object plugin(Object target) {return Interceptor.super.plugin(target);}// 用于设置拦截器的属性这些属性可以在配置拦截器时传递。Overridepublic void setProperties(Properties properties) {Interceptor.super.setProperties(properties);} }注意要引入 Mybatis 提供的 Interceptor 3.2 创建分页查询函数 与 sql 查询函数 ListUser selectUserPage(Param(page) Page page, Param(name) String name);sql select idselectUserPage resultTypecom.hzy.demo.pojos.Userselect *from user2whereif testname ! null and name ! name like %${name}%/if/where/select3.3 编写拦截逻辑 public Object intercept(Invocation invocation) throws Throwable {}Invocation 接口是 MyBatis 中拦截器机制中的一个核心接口用于描述拦截的方法调用。Invocation 接口定义了以下方法 Object getTarget() 获取被拦截的目标对象。在 MyBatis 中通常是获取到某个 StatementHandler、Executor、ParameterHandler 或 ResultSetHandler 等对象。 Method getMethod() 获取被拦截的目标方法。 Object[] getArgs() 获取被拦截方法的参数。 Object proceed() 调用被拦截方法相当于执行原始的方法调用。拦截器可以选择是否调用该方法如果调用会继续执行原始的方法如果不调用可以在拦截器中实现自己的逻辑。 使用 getTarget() 获取目标对象 StatementHandler statementHandler (StatementHandler) invocation.getTarget();StatementHandler 是 MyBatis 中负责处理 SQL 语句的核心接口它定义了对数据库的操作方法。在 MyBatis 的执行过程中StatementHandler 负责创建 PreparedStatement 对象、设置参数、执行 SQL 语句等操作。 可以看到 StatementHandler 对象 里面的 boundSql 对象包含了 sql语句 与 方法参数利用这个就可以实现分页查询。 拦截逻辑 // Intercepts 注解配置表明该拦截器会拦截 StatementHandler 接口的 prepare 方法 Intercepts({Signature(type StatementHandler.class, method prepare, args { Connection.class, Integer.class }) }) public class PageInterceptor implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {StatementHandler statementHandler (StatementHandler) invocation.getTarget();BoundSql boundSql statementHandler.getBoundSql();Map parameterObject (Map)boundSql.getParameterObject();Page page (Page) parameterObject.getOrDefault(page,null);if (page ! null){// 获取原始 SQL 语句String originalSql boundSql.getSql();// 修改 SQL 语句StringBuilder sb new StringBuilder();sb.append(originalSql).append( limit ).append(page.getStart()).append(,).append(page.getSize());// 将修改后的 SQL 设置回 BoundSqlMetaObject metaObject SystemMetaObject.forObject(boundSql);metaObject.setValue(sql,sb.toString());}// 继续执行 SQL 语句return invocation.proceed();}Overridepublic Object plugin(Object target) {return Interceptor.super.plugin(target);}Overridepublic void setProperties(Properties properties) {Interceptor.super.setProperties(properties);} } 3.4 注册 PageInterceptor 到 Mybatis 拦截器链中 Configuration public class MyBatisConfig {Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 添加自定义拦截器Interceptor[] interceptors new Interceptor[]{new PageInterceptor()};sessionFactory.setPlugins(interceptors);return sessionFactory.getObject();} }3.5 测试 Testvoid test10() {int currentPage 1;int size 4;Page page new Page();page.setSize(size);page.setStart((currentPage-1)*size);ListUser users userMapper.selectUserPage(page, null);for (User user : users){System.out.println(user);} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏源码网站免费线上营销方案案例范文

一、翔云 人工智能开放平台(车牌识别) 二、cJSON 库 三、实现代码 四、回调函数 五、人脸识别和车牌识别获取数据的区别 六、异步网络请求和同步网络请求的区别 七、解耦 一、翔云 人工智能开放平台(车牌识别) 翔云 人工智能开放…

个人网站免费域名注册wordpress每篇文章怎么加关键词

Google Analytics(谷歌分析)是由Google提供的一款网络分析服务。该服务旨在帮助网站和应用程序的所有者更好地了解其用户的行为和交互,从而优化网站或应用的性能、用户体验和营销策略。Google Analytics 提供了丰富的数据和报告,涵…

网站建设项目收费标准公司网站怎么修改

1. 主界面效果 效果关键点: 1)拖动标题栏可实现主界面拖动 2)logo图标名称及主界面背景 3)最小化及关闭 2.思路分析 1)背景图片及logo图标的设定比较简单,通过stylesheet即可实现。通过QWidget的拖动即可实…

网站开发常用颜色广州地铁站路线图

机器学习的目的是预测(包括分类和回归)。 分类是根据输入数据,判别这些数据隶属于哪个类别。 回归则是根据输入数据,计算出一个输出值。输入数据一般为一个向量,向量的各个分量也称为特征(Feature&#xff…

商业网站建设者新郑市建设局网站

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。 请计算一共有多少种不同的排列方案。 运行限制 public class Main…

免费无限建站h5常用的编辑平台

oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式。 thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。thin就是纯粹用Java写的ORACLE数据库访问接口。oci是…

青岛金融网站建设美工零基础的从哪开始学

项目采用亚马逊云服务器,需要SSH证书访问, 部署 zookeeper、kafka、redis、mysql、clichkhouse 其中zookeeper、kafka、redis采用docker部署 一、首先连接服务器(使用亚马逊云下载的pem密钥文件) [HOST]# ssh -i AWS-Host.pem centos18.25.99.1 [HOST…

建站软件免费版下载搜索引擎优化排名案例

上篇文章介绍了什么是Activity,Turn,TurnContext和BotAdapter,这篇文章我们看看这些东西是如何窜起来的,他们是如何处理用户发给bot的消息的。 我们以一个最简单的bot,echo bot为例子,所谓的echo bot就是用…

wordpress 建网站视频遵义网站网站建设

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest fixture的基本使用方法,本小节我们讲解一下fixture的作用域。 fixture前后置区分 控制fixture的前置和后置操作是通过yield关键字进行来区分的,代码在yield前面…

百度网站推广外包个人电脑 wordpress

这里的“通讯”加上了引号,是因为实际上所有的socket都有通讯的功能,只是在我们的例子中,之前那个socket只负责listen,而这个socket负责接受信息并echo回去。我们现看看这个函数:boolTcpServer::isAccept() { unsi…

宁波规划建设局网站五个推进网站建设工作

(1)熟练掌握Java开发的原理和方法 (2)熟练学习掌握SSM框架 (3)熟悉软件开发的流程 (4)了解中内外互联网中所主流的技术 (5)深层次的了解计算机学科领域的知识…

阜宁城乡建设局网站数据网站建设

一、前言 最近在前端项目Vue项目install时会出现node-sass command failed的错误,原因是NodeJS和node-sass的版本不对应导致的,本文将给出解决方案。 二、解决方案 以下是NodeJS和node-sass版本的对照关系:

医院网站建设意义网站建设一般是用哪个软件

用最清晰简洁的方法整合一个响应式相册效果 技术选型 由于我选用的主题使用了fancyBox作为图片弹出展示的框架,查看后表示很不错,能满足需要http://fancyapps.com/fancybox/3/图片加载可能会太慢,所以还需要一个图片延迟加载插件 Lazyload想使…

为什么登录不上建设银行网站网站后台用什么

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…

物流网站给做软件下载网站空间商

Linux 清理make、configure生成的文件(灵感来自于quilt安装) make clean #make clean 可以清除make失败的内容Linux 清理make、configure生成的文件 make clean #清除上一次make命令生成的文件 make distclean #清除上一次make以及configure命令生成的…

做网站都得会什么技术空间信息网站

Windows 下通过计划任务执行数据库备份脚本在Linux下可以通过crontab来设置定时执行数据库的备份脚本,同样Windows 下可以通过设定任务计划程序来设定要执行的自动备份脚本。具体的设定过程不再详述,下面分别为Oracle和MySQL的备份脚本:1.Win…

中学院新校区建设专题网站网站建设属于软件开发

setup 函数中有两个主要的参数:props、context 。 props 用于接收父组件传递过来的数据,父传子。 context 指的是 setup 的上下文,它有三个属性:attrs、slots、emit 。 attrs 用于:当父组件传递过来的数据&#xff…

微信公众号登录不上seo门户网

前言实体类的动态生成(一)由于采用字典的方式来保存属性变更值的底层设计思想,导致了性能问题,虽然.NET的字典实现已经很高效了,但相对于直接读写字段的方式而言依然有巨大的性能差距,同时也会导致对属性的…

提升网站流量广州的网站建设公司

目录 1.问:如何设计一个系统来确保在可能出现网络分区和故障的分布式环境中的数据一致性?